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

muchos print por subir lvl y tira overflowed


  
 
 
Thread Tools Display Modes
Author Message
Sabalero_Soy_Yo
Member
Join Date: Apr 2013
Old 04-12-2013 , 18:48   muchos print por subir lvl y tira overflowed
#1

viendo el tuto de kiske para crear niveles se me dio por leer todos lso comentarios hasta que llege a ver esto:

PHP Code:
public update(idamount

    
g_ammopacks[id] += amount 

    
new memori g_level[id

    if(
amount<0
        { 
        while(
g_ammopacks[id] < NIVELES[g_level[id]]) g_level[id]-- 
        } 
        else 
        { 
        while(
g_ammopacks[id] >= NIVELES[g_level[id]]) g_level[id]++ 
        } 

    if(
g_level[id]<memoriclient_print(idprint_center"Bajaste de nivel"
    else if(
g_level[id]>memoriclient_print(idprint_center"Subiste de nivel"


y quiero saber si esto:

PHP Code:
    new memori g_level[id

    if(
g_level[id]<memoriclient_print(idprint_center"Bajaste de nivel"
    else if(
g_level[id]>memoriclient_print(idprint_center"Subiste de nivel"
hace que no me tire overflowed cuando subo muchos niveles.

y si es asi, es decir que estoy en lo cierto: es la mejor forma?

Last edited by Sabalero_Soy_Yo; 04-12-2013 at 18:48.
Sabalero_Soy_Yo is offline
LuKks
Senior Member
Join Date: Dec 2012
Location: Argentina, Santa Fe
Old 04-12-2013 , 21:13   Re: muchos print por subir lvl y tira overflowed. lol
#2

creo que estas en lo cierto y es la mejor forma
LuKks is offline
Roccoxx
AlliedModders Donor
Join Date: Jan 2012
Location: Argentina
Old 04-12-2013 , 21:15   Re: muchos print por subir lvl y tira overflowed. lol
#3

Quote:
Originally Posted by LuKks View Post
creo que estas en lo cierto y es la mejor forma
no
__________________
Tutorials here (Spanish)

Like as another Pijudo said: "Tired and retired"
Roccoxx is offline
Send a message via MSN to Roccoxx
shinoda
Spanish Moderator
Join Date: Nov 2009
Location: ag_crossfire
Old 04-12-2013 , 22:00   Re: muchos print por subir lvl y tira overflowed
#4

Quote:
Originally Posted by Roccoxx View Post
no
Postea tu forma y veremos si es mejor.

Quote:
Originally Posted by Sabalero_Soy_Yo View Post
y quiero saber si esto:

PHP Code:
    new memori g_level[id

    if(
g_level[id]<memoriclient_print(idprint_center"Bajaste de nivel"
    else if(
g_level[id]>memoriclient_print(idprint_center"Subiste de nivel"
hace que no me tire overflowed cuando subo muchos niveles.

y si es asi, es decir que estoy en lo cierto: es la mejor forma?
Sin considerar el "re-indexing arrays", sí.
__________________
Oh hell no this shit is awesome !!!
shinoda is offline
Send a message via MSN to shinoda Send a message via Skype™ to shinoda
Sabalero_Soy_Yo
Member
Join Date: Apr 2013
Old 04-12-2013 , 23:32   Re: muchos print por subir lvl y tira overflowed
#5

no entendi muy bien lo que me quisiste decir shinoda me explicarias?
que desventajas tiene usar esta forma?
Sabalero_Soy_Yo is offline
XINLEI
me too
Join Date: Jun 2011
Location: Colombian Coffee storage
Old 04-12-2013 , 23:51   Re: muchos print por subir lvl y tira overflowed
#6

Quote:
Originally Posted by Sabalero_Soy_Yo View Post
no entendi muy bien lo que me quisiste decir shinoda me explicarias?
que desventajas tiene usar esta forma?
No es una desventaja, es una optimizacion al compilar el plugin. No es necesario si no lo quieres hacer.

http://wiki.amxmodx.org/Optimizing_P...e-index_Arrays

Desde que no se como tienes los levels, usa esto:
PHP Code:
public update(idamount)  
{  
    
g_ammopacks[id] += amount  

    
new memori g_level[id]  

    if(
g_ammopacks[id] < NIVELES[g_level[id]]) 
        
g_level[id]--  
    else if(
g_ammopacks[id] >= NIVELES[g_level[id]]) 
        
g_level[id]++    

    if(
g_level[id]<memori
        
client_print(idprint_center"Bajaste de nivel")  
    else if(
g_level[id]>memori
        
client_print(idprint_center"Subiste de nivel")  


Esto funciona siempre y cuando se suba 1 lvl a la vez.

Last edited by XINLEI; 04-12-2013 at 23:51.
XINLEI is offline
Sabalero_Soy_Yo
Member
Join Date: Apr 2013
Old 04-13-2013 , 02:31   Re: muchos print por subir lvl y tira overflowed
#7

pero si yo subo 10 niveles juntos me aparecera 10 print?

eso es lo que quiero evitar quiero que diga subiste de nivel y listo. sin que mande 500 prints por que tira overflowed.
Sabalero_Soy_Yo is offline
baneado
Veteran Member
Join Date: Dec 2012
Location: amxmodx-es.com
Old 04-13-2013 , 03:42   Re: muchos print por subir lvl y tira overflowed
#8

Quote:
Originally Posted by Sabalero_Soy_Yo View Post
pero si yo subo 10 niveles juntos me aparecera 10 print?

eso es lo que quiero evitar quiero que diga subiste de nivel y listo. sin que mande 500 prints por que tira overflowed.
si te fijas en el code que te puso, te cambió los while por if, mal hecho....
no, solo te saldrá un print, pero dejalo con while

pd: yo ya hice un thread sobre esto y me las arreglé yo solito y dejé la solución
baneado is offline
XINLEI
me too
Join Date: Jun 2011
Location: Colombian Coffee storage
Old 04-13-2013 , 11:59   Re: muchos print por subir lvl y tira overflowed
#9

Quote:
Originally Posted by Sabalero_Soy_Yo View Post
pero si yo subo 10 niveles juntos me aparecera 10 print?
No, solo saldra uno (o 10 veces cada vez que cambias de AP...) Pruebelo carajo.


Quote:
Originally Posted by baneado View Post
si te fijas en el code que te puso, te cambió los while por if, mal hecho
Previene el overflow, y eso es lo que él pidio. Ademas, subir 10 levels es un evento anormal.
XINLEI is offline
MexPower
Veteran Member
Join Date: Nov 2012
Old 04-13-2013 , 12:16   Re: muchos print por subir lvl y tira overflowed
#10

Quote:
Originally Posted by baneado View Post
Ya lo tengo solucionado.

Saque la idea de un code que vi por ahi, no me acuerdo donde.

Ahi lo dejo por si alguien le hace falta:
PHP Code:
// Update level and range
public update_level(taskid)
{
    static 
idsound[64];
    
id ID_UPDATE;
    
    static 
levellevel g_level[id]
    static 
rangelevelrangelevel g_rangelevel[id]
    
    
// UPLOAD LEVEL
    
    // Maximum level
    
if (g_level[id] < MAX_LVL)
    {
        while (
g_experience[id] >= cost_levelup(g_level[id]))
            
g_level[id]++
    }
    
    
// Level changed?
    
if (g_level[id] > level)
    {
        
zp_colored_print(id"^x04[ZP]^x01 Felicidades! Has ascendido a nivel: ^x04%d^x01"g_level[id])
        
ArrayGetString(sound_level_uprandom_num(0ArraySize(sound_level_up) - 1), soundcharsmax(sound))
        
OnePlaySound(idsound);
    }
    
    
// REDUCE LEVEL
    
    // Minimum level
    
if (g_level[id] > 1)
    {
        while (
g_experience[id] < cost_leveldown(g_level[id]))
            
g_level[id]--
    }
    
    
// Level changed?
    
if (g_level[id] < level)
    {
        
zp_colored_print(id"^x04[ZP]^x01 Mala suerte! Has descendido a nivel: ^x04%d^x01"g_level[id])
        
ArrayGetString(sound_level_downrandom_num(0ArraySize(sound_level_down) - 1), soundcharsmax(sound))
        
OnePlaySound(idsound);
    }
    
    
// UPLOAD RANGE
    
    // Maximum range
    
if (g_rangelevel[id] < MAX_RANGE)
    {
        while (
g_level[id] >= cost_rangeup(g_rangelevel[id]))
            
g_rangelevel[id]++
    }
    
    
// Range changed?
    
if (g_rangelevel[id] > rangelevel)
        
zp_colored_print(id"^x04[ZP]^x01 Felicidades! Has ascendido a rango: ^x04%s^x01"g_rangename[g_rangelevel[id]])
    
    
// REDUCE RANGE
    
    // Minimum range
    
if (g_rangelevel[id] > 1)
    {
        while (
g_level[id] < cost_rangedown(g_rangelevel[id]))
            
g_rangelevel[id]--
    }
    
    
// Range changed?
    
if (g_rangelevel[id] < rangelevel)
        
zp_colored_print(id"^x04[ZP]^x01 Mala suerte! Has descendido a rango: ^x04%s^x01"g_rangename[g_rangelevel[id]])
    
    return 
PLUGIN_HANDLED;

__________________
Allied Modders En Español
MexPower is offline
 



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 22:00.


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