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

[HELP] Problem with this code


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
naSTR
Veteran Member
Join Date: Dec 2011
Location: Asia, Mongolia
Old 03-02-2012 , 07:19   [HELP] Problem with this code
Reply With Quote #1

Is there any problem in this code? This plugin saves frags and deaths but resets the score kind a 24 or 25 later How to make it save forever? Uh and someone add cvar admins reset all score? Users can say /reset to reset they're score will be nice 2
PHP Code:
new PLUGINNAME[] = "rememberthescore" 
new VERSION[] = "0.5" 
new AUTHOR[] = "JGHG" 

#include <amxmodx> 
#include <amxmisc> 
#include <fun> 
#include <cstrike> 
#include <csstats> 

// Globals below 
new gmsgScoreInfo 
new bool:reread false 
new playersFrags[33
new 
playersDeaths[33
// Globals above 


public client_disconnect(id) { 
    
storeFrags(id
    
storeDeaths(id

    new 
seconds get_cvar_num("rememberthefrags_resetseconds"
    if (
seconds 0) { 
        new 
key[40] = "frags" 
        
setKeyString(idkey
        
set_task(float(seconds), "resetuserstats"0keystrlen(key)) 

        
key "death" 
        
setKeyString(idkey
        
set_task(float(seconds), "resetuserstats"0keystrlen(key)) 
    } 


public 
resetuserstats(key[]) { 
    
//server_print("Will reset this key: ^"%s^"", key) 
    
if (!vaultdata_exists(key)) 
        return 

    if (!
remove_vaultdata(key)) 
        
server_print("[%] Error - Key for %s exists, but couldn't be removed!"PLUGINNAMEkey


public 
client_putinserver(id) { 
    
// Restore frags n deaths from file. 
    
new idd[1
    
idd[0] = id 
    set_task
(1.0,"delayedrestore",0,idd,1

    return 
PLUGIN_CONTINUE 


public 
delayedrestore(idd[]) { 
    
restoreVaultData(idd[0]) 


/* 
public restoreme(id,level,cid) { 
    if (!cmd_access(id,level,cid,1)) { 
        return PLUGIN_HANDLED 
    } 

    restoreVaultData(id) 

    return PLUGIN_HANDLED 

*/ 

public saveme(id,level,cid) { 
    
/* 
    if (!cmd_access(id,level,cid,1)) { 
        return PLUGIN_HANDLED 
    } 
    */ 

    
storeFrags(id
    
storeDeaths(id

    return 
PLUGIN_HANDLED 


restoreVaultData(id) { 
    new 
keyString[40] = "frags"fragsdeaths 
    setKeyString
(id,keyString

    if (
vaultdata_exists(keyString)) { 
        
frags get_vaultdata(keyString
        
set_user_frags(id,frags
    } 

    
keyString "death" 
    
setKeyString(id,keyString

    if (
vaultdata_exists(keyString)) { 
        
deaths get_vaultdata(keyString
        
cs_set_user_deaths(iddeaths
    } 

    if (!
frags
        
frags get_user_frags(id
    if (!
deaths
        
deaths get_user_deaths(id

    
// With the below message, we can update the scores shown without having to wait 
    // for next round or when id dies/shoots someone or something like that. 
    
sendScoreInfo(id,frags,deaths,get_user_team(id)) 


sendScoreInfo(id,frags,deaths,team) { 
    
message_begin(MSG_ALL,gmsgScoreInfo
    
write_byte(id
    
write_short(frags
    
write_short(deaths
    
write_short(0
    
write_short(team
    
message_end() 


setKeyString(id,keyString[40]) { 
    if (
is_user_bot(id)) { 
        new 
name[32
        
get_user_name(id,name,31
        new 
spaces charOccurances(name," "
        for (new 
0;spaces;i++) { 
            
replace(name,31," ","_"
        } 

        
copy(keyString[5],34,name
    } 
    else { 
        new 
authidString[32
        
get_user_authid(idauthidString31
        
copy(keyString[5], 34authidString
    } 


storeFrags(id) { 
    new 
keyString[40] = "frags" 
    
setKeyString(id,keyString
    
//client_print(0,print_chat,"fragKeyString after copy is '%s'.",fragKeyString) 

    
new fragsString[10
    
num_to_str(get_user_frags(id),fragsString,9

    
set_vaultdata(keyString,fragsString
    
//client_print(0,print_chat,"Stored %s to %s.",fragsString,keyString) 


stock charOccurances(string[],matchchar[]) { 
    if (
strlen(matchchar) != 1
        return -


    
new occurances 
    
new len strlen(string) 
    for (new 
0;len;i++) { 
        if (
string[i] == matchchar[0]) { 
            
occurances++ 
        } 
    } 

    return 
occurances 


storeDeaths(id) { 
    new 
keyString[40] = "death" 
    
setKeyString(id,keyString
    
//client_print(0,print_chat,"keyString after copy is '%s'.",keyString) 

    
new deathString[10
    
num_to_str(get_user_deaths(id),deathString,9

    
set_vaultdata(keyString,deathString
    
//client_print(0,print_chat,"Stored %s to %s.",deathString,keyString) 



public 
restarting_event() { 
    
reread true 

    
// Will need to do a quick remembering of current frags here... 
    // Restore these values at next newround_event. Only restore 
    // if these are larger than the values in the vault. If not, 
    // use those larger values. 
    
new players[32], playersFound 
    get_players
(players,playersFound

    for (new 
0;playersFound;i++) { 
        
playersFrags[players[i]] = get_user_frags(players[i]) 
        
playersDeaths[players[i]] = get_user_deaths(players[i]) 
    } 



public 
commencing_event() { 
    
reread true 

    
// Will need to do a quick remembering of current frags here... 
    // Restore these values at next newround_event. Only restore 
    // if these are larger than the values in the vault. If not, 
    // use those larger values. 
    
new players[32], playersFound 
    get_players
(players,playersFound

    for (new 
0;playersFound;i++) { 
        
playersFrags[players[i]] = get_user_frags(players[i]) 
        
playersDeaths[players[i]] = get_user_deaths(players[i]) 
    } 



public 
instantReread() { 
    if (
reread) { 
        
reread false 
        reread_function
() 
    } 


stock getVaultFrags(id) { 
    new 
keyString[40] = "frags" 
    
setKeyString(id,keyString
    if (
vaultdata_exists(keyString)) { 
        return 
get_vaultdata(keyString
    } 
    else { 
        return 
playersFrags[id
    } 

    return 



stock getVaultDeaths(id) { 
    new 
keyString[40] = "death" 
    
setKeyString(id,keyString
    if (
vaultdata_exists(keyString) && get_vaultdata(keyString) > playersDeaths[id]) { 
        return 
get_vaultdata(keyString
    } 
    else { 
        return 
playersDeaths[id
    } 

    return 



public 
reread_function() { 
    new 
players[32], playersFoundkeyString[40], vaultFragsvaultDeathsname[32

    
get_players(players,playersFound

    for (new 
0;playersFound;i++) { 
        
get_user_name(players[i],name,31
        
keyString "frags" 
        
setKeyString(players[i],keyString

        if (!
vaultdata_exists(keyString)) { 
            
//client_print(0,print_chat,"%s has no previous frags stored, restoring %d from variable.",name,playersFrags[players[i]]) 
            
set_user_frags(players[i],playersFrags[players[i]]) 

            
vaultDeaths getVaultDeaths(players[i]) 

            
cs_set_user_deaths(players[i],vaultDeaths
            
sendScoreInfo(players[i],playersFrags[players[i]],vaultDeaths,get_user_team(players[i])) 
        } 
        else { 
            
// Compare values, set the biggest one. 
            
vaultFrags get_vaultdata(keyString
            if (
vaultFrags >= playersFrags[players[i]]) { 
                
set_user_frags(players[i],vaultFrags

                
vaultDeaths getVaultDeaths(players[i]) 

                
cs_set_user_deaths(players[i],vaultDeaths
                
sendScoreInfo(players[i],vaultFrags,vaultDeaths,get_user_team(players[i])) 
                
//client_print(0,print_chat,"%s has larger value in variable, %d to %d.",name,vaultFrags,playersFrags[players[i]]) 
            

            else { 
                
set_user_frags(players[i],playersFrags[players[i]]) 

                
vaultDeaths getVaultDeaths(players[i]) 

                
cs_set_user_deaths(players[i],vaultDeaths
                
sendScoreInfo(players[i],playersFrags[players[i]],vaultDeaths,get_user_team(players[i])) 
                
//client_print(0,print_chat,"%s has larger value in vault, %d to %d.",name,playersFrags[players[i]],vaultFrags) 
            

        } 
    } 


/* 
public setdatafromstats(id,level,cid) { 
    if (!cmd_access(id,level,cid,1)) { 
        return PLUGIN_HANDLED 
    } 
    new stats[8], bodyHits[8] 
    get_user_wstats(id,0,stats,bodyHits) 
    set_user_frags(id,stats[0]) 
    set_user_deaths_cs(id,stats[1]) 
    console_print(id,"0:%d, 1:%d, 2:%d, 3:%d, 4:%d, 5:%d, 6:%d, 7:%d",stats[0],stats[1],stats[2],stats[3],stats[4],stats[5],stats[6],stats[7]) 
    sendScoreInfo(id,stats[0],stats[1],get_user_team(id)) 

    return PLUGIN_HANDLED 

*/ 

resetstats() { 
    new 
vaultpath[128
    
get_localinfo("amxx_vault"vaultpathsizeof vaultpath 1
    if (!
file_exists(vaultpath)) 
        return 

    new 
linetextline[128], linelength 
    
new const LEN sizeof textline 
    
new key[64
    new const 
KEYLEN sizeof key 
    
new bool:removedkeysremoved 
    
do { 
        
removed false 
        line 

        
while ((line read_file(vaultpathlinetextlineLENlinelength))) { 
            if (
linelength && equal(textline"frags"5) || equal(textline"death"5)) 
                
//server_print("Line: %d, text: %s", line, textline) 
                
if (parse(textlinekeyKEYLEN)) { 
                    
//server_print("Key: %s", key) 
                    
if (!remove_vaultdata(key)) 
                        
server_print("[%s] Couldn't remove stats key: %s"key
                    else { 
                        
removed true 
                        keysremoved
++ 
                    } 
                } 
                else { 
                    
//server_print("Couldn't parse: %s", textline) 
                

        } 
    } 
    while (
removed

    
server_print("[%s] Removed %d stats keys from vault."PLUGINNAMEkeysremoved


public 
plugin_init() { 
    
register_plugin(PLUGINNAMEVERSIONAUTHOR
    
//register_clcmd("0restorevault","restoreme",ADMIN_CFG,": restores your frags from vault.") 
    //register_clcmd("0restorestats","setdatafromstats",ADMIN_CFG,": restores your frags from stats.") 
    //register_clcmd("amx_storefrags","saveme",0,"- stores your frags and deaths.") 
    
register_event("TextMsg","commencing_event","a","2=#Game_Commencing"
    
register_event("TextMsg","restarting_event","a","2=#Game_will_restart_in"
    
//register_event("ResetHUD","newround_event","b") 
    
register_event("SendAudio","instantReread","b","2=%!MRAD_GO","2=%!MRAD_MOVEOUT","2=%!MRAD_LETSGO","2=%!MRAD_LOCKNLOAD"
    
gmsgScoreInfo get_user_msgid("ScoreInfo"

    
register_cvar("rememberthefrags_resetseconds""0"

    if (
get_cvar_num("rememberthefrags_resetseconds")) 
        
resetstats() 

__________________

Last edited by naSTR; 03-02-2012 at 07:20.
naSTR is offline
Reply



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 19:36.


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