Raised This Month: $ Target: $400
 0% 

Prokreedz edit top10 problem


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
kinoute
New Member
Join Date: Jan 2007
Old 01-29-2007 , 21:42   Prokreedz edit top10 problem
Reply With Quote #1

Hello,

I use this plugin but I have a problem with the /top15, indeed when a player is present in the top and when he does a new score, his name is again added on a new line and the old score is always here.. I think its normal and It is the plugin which makes that but I thus meet myself with a top performed with doubloons.. How fix that?

I found this part of the prokreedz.sma :

PHP Code:
public topten_update(id) { 
     new 
szvault[64], szmap[32], kreedztime 
     get_mapname
(szmap,32
     
format(szvault,64,"pk_%s",szmap
     
kreedztime get_systime() - timer_time[id-1
      
     new 
vault nvault_open(szvault// Now we have to sort the new list [IMG]http://xtreme-jumps.eu/e107_images/emoticons/smilie11.gif[/IMG]  
     
if(vault != -1) { 
         new 
szkey[8
         for(new 
i=1;i<=10;i++) { 
             new 
szreturn[128
             new 
arg1[32], arg2[8
             
format(szkey,8,"%d",i
             
nvault_get(vault,szkey,szreturn,128
              
             if(
parse(szreturn,arg1,32,arg2,8) == || kreedztime str_to_num(arg2)) { 
                 new 
sznew[128], szname[32
                 
get_user_name(id,szname,32
                 
format(sznew,128,"^"%s^" ^"%d^" ^"%d^"",szname,kreedztime,checkpointnum[id-1]) 
                 if(
10) { 
                     for(new 
x=10;x>i;x--) { 
                         new 
sztemp[128], sztempkey[8
                         
format(sztempkey,8,"%d",x-1
                         
nvault_get(vault,sztempkey,sztemp,128
                          
                         if(!
equal(sztemp,"")) { 
                             
format(sztempkey,8,"%d",x
                             
nvault_pset(vault,sztempkey,sztemp
                         } 
                     } 
                 } 
                 
nvault_pset(vault,szkey,sznew
                  
                 if(
== 1
                     
client_print(0,print_chat,"[ProKreedz] %s has established a new record",szname
                  
                 break 
             } 
         } 
         
nvault_close(vault
     } 
 } 
I suppose that it is in this place that the top is updated, how to limit the number of records by player to the only one in the top ? I would like to have twice no same player in top10.


thank you in advance and sorry for my bad english!
kinoute is offline
kinoute
New Member
Join Date: Jan 2007
Old 01-30-2007 , 16:12   Re: Prokreedz edit top10 problem
Reply With Quote #2

Anyone ?

A guys posted this message on xtreme-jumps forums

Quote:
u have to add much lines of code for that

1. u have to save steam id from the players which are in top10

2. when someone reach target, it should check if ther is an entry to this steam id (new function)

if no, do nothing

if yes, check if new time is better

if yes, load topten_update
But i have no Knowledge in programming.. A coder can help me ?

Thanks you in advance !!
kinoute is offline
kinoute
New Member
Join Date: Jan 2007
Old 02-05-2007 , 00:35   Re: Prokreedz edit top10 problem
Reply With Quote #3

Anyone ?
kinoute is offline
drx
New Member
Join Date: Mar 2007
Location: Germany
Old 03-10-2007 , 18:03   Re: Prokreedz edit top10 problem
Reply With Quote #4

hi

didnt test it that much, so its not gueranteed that its bugfree (if you find some, pls post theme here).

here it is:


replace your whole topten_update function with this:
PHP Code:
getTopTenPlace(id) {
        
    new 
currentMap[32];
    
get_mapname(currentMap32);
    
    new 
topTenVault[64];
    
format(topTenVault64"pk_%s"currentMap);
    
    new 
kzTime;    
    
kzTime get_systime() - timer_time[id-1];
    
    new 
vault nvault_open(topTenVault);
    new 
vaultKey[8];
    new 
vaultReturn[128];
    new 
arg1[32], arg2[8];
    
    new 
ret;
    
    if(
vault != INVALID_HANDLE) {
        
        for(new 
1<= 10i++) {
        
            
format(vaultKey8"%d"i);
            
            
nvault_get(vaultvaultKeyvaultReturn128);
            
            if(
parse(vaultReturnarg132arg28) != 0) {
                
                if(
kzTime str_to_num(arg2)) {
                
                    
ret i;
                    break;
                
                } else {
                
                    
ret 0;
                
                }
            
            } else {
                
                
ret i;
                break;
            
            }
        
        }
        
    }
    
    
nvault_close(vault);
    
    return 
ret;
}

// ==================

isPlayerInTopTen(id) {

    new 
userName[32];
    
get_user_name(iduserName32);

    new 
currentMap[32];
    
get_mapname(currentMap32);
    
    new 
topTenVault[64];
    
format(topTenVault64"pk_%s"currentMap);
    
    new 
vault nvault_open(topTenVault);
    new 
vaultKey[8];
    new 
vaultReturn[128];
    new 
arg1[32], arg2[8];
    
    new 
ret;
    
    if(
vault != INVALID_HANDLE) {
    
        for(new 
1<= 10i++) {
        
            
format(vaultKey8"%d"i);
            
            
nvault_get(vaultvaultKeyvaultReturn128);
            
            if(
parse(vaultReturnarg132arg28) != && equal(userNamearg1)) {
            
                
ret i;
                break;
            
            } else {
            
                
ret 0;
            
            }
        
        }
    
    }
    
    
nvault_close(vault);
    
    return 
ret;
}

// ==================

showTime(idnewPlace) {

    new 
userName[32];
    
get_user_name(iduserName32);
    
    new 
kzTime;    
    
kzTime get_systime() - timer_time[id-1];
    
    new 
minutesseconds
                        
    
if((kzTime 60.0) >= 1) {

        
minutes floatround(kzTime 60.0,floatround_floor);
        
kzTime -= (floatround(kzTime60.0,floatround_floor) * 60);
        
seconds kzTime;
        
    } else {
        
        
minutes 0;
        
seconds kzTime;
    
    }

    
set_hudmessage(255255255, -1.0, -1.0);
    
    if(
newPlace == 1) {
    
        
show_hudmessage(0"%s finished the map in %d min %d sec and established a new record"userNameminutesseconds);
        
    } else if(
newPlace == 0) {
    
        
show_hudmessage(0"%s finished the map in %d min %d sec"userNameminutesseconds);
    
    } else {
    
        
show_hudmessage(0"%s finished the map in %d min %d sec and established a new Top10 time"userNameminutesseconds);
    
    }

}

// ==================

public topten_update(id) {
    
    new 
newPlace getTopTenPlace(id);
    
    new 
oldPlace isPlayerInTopTen(id);
    
    new 
userName[32];
    
get_user_name(iduserName32);

    new 
currentMap[32];
    
get_mapname(currentMap32);
    
    new 
kzTime;    
    
kzTime get_systime() - timer_time[id-1];
    
    new 
vaultEntry[128];
    
format(vaultEntry128"^"%s^" ^"%d^" ^"%d^""userNamekzTimecheckpointnum[id-1]);
    
    new 
topTenVault[64];
    
format(topTenVault64"pk_%s"currentMap);
    
    new 
vault nvault_open(topTenVault);
    
    if(
oldPlace 0) {
    
        if(
newPlace ) {
        
            new 
key[8];
            
            if(
newPlace oldPlace) {
        
                
format(key8"%d"oldPlace);
                
nvault_remove(vaultkey);
                
                for(new 
oldPlace10i++) {
                
                    new 
temp[128], tempKey[8]
                    
format(tempKey,8,"%d",i+1)
                    
nvault_get(vault,tempKey,temp,128)
                    
                    if(!
equal(temp,"")) {
                        
format(tempKey,8,"%d",i)
                        
nvault_pset(vault,tempKey,temp)
                    }
                    
                }
                
                for(new 
10newPlacei--) {
                
                    new 
temp[128], tempKey[8]
                    
format(tempKey,8,"%d",i-1)
                    
nvault_get(vault,tempKey,temp,128)
                    
                    if(!
equal(temp,"")) {
                        
format(tempKey,8,"%d",i)
                        
nvault_pset(vault,tempKey,temp)
                    }
                    
                }
                
                
format(key8"%d"newPlace);
                
nvault_pset(vaultkeyvaultEntry);
            
            } else if(
newPlace == oldPlace) {
                
                
format(key8"%d"oldPlace);
                
nvault_remove(vaultkey);
                
format(key8"%d"newPlace);
                
nvault_pset(vaultkeyvaultEntry);
            
            }
            
            
showTime(idnewPlace);
            
        
        } 
        
    } else {
    
        if(
newPlace 0) {
        
            for(new 
10newPlacei--) {
            
                new 
temp[128], tempKey[8]
                
format(tempKey,8,"%d",i-1)
                
nvault_get(vault,tempKey,temp,128)
                
                if(!
equal(temp,"")) {
                    
format(tempKey,8,"%d",i)
                    
nvault_pset(vault,tempKey,temp)
                }
                
            }
            
            new 
key[8];

            
format(key8"%d"newPlace);
            
nvault_pset(vaultkeyvaultEntry);
            
            
showTime(idnewPlace);
        
        } 
    
    }
    
    
nvault_close(vault);
    


Last edited by drx; 03-10-2007 at 18:08.
drx is offline
Send a message via ICQ to drx
aDr.
Member
Join Date: Oct 2006
Old 04-27-2007 , 05:21   Re: Prokreedz edit top10 problem
Reply With Quote #5

Works on Windows , but on linux dont work
Attached Files
File Type: sma Get Plugin or Get Source (prokreedz.sma - 717 views - 44.8 KB)
__________________
aDr. is offline
slpknt
Senior Member
Join Date: Dec 2007
Location: Russia
Old 06-17-2008 , 10:44   Re: Prokreedz edit top10 problem
Reply With Quote #6

found a bug, if some one was 2nd and became 1st, the result of 3rd copies to 2nd place.
so one guy will be twice in the top10
slpknt is offline
Send a message via ICQ to slpknt
vato loco [GE-S]
Veteran Member
Join Date: Oct 2006
Location: Germany
Old 06-18-2008 , 02:59   Re: Prokreedz edit top10 problem
Reply With Quote #7

take a look at this !

http://forums.alliedmods.net/showthr...ight=prokreedz
__________________
vato loco [GE-S] is offline
Reply


Thread Tools
Display Modes

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


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