AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Need help with this plugin (https://forums.alliedmods.net/showthread.php?t=229783)

xoxolala 11-14-2013 20:08

Need help with this plugin
 
Hello AM

I need help with my plugin.

Bug:
Everytime I enter a menu, it gives me lvl 10 in Health. (I've only added HP for T's so far. Just for testing that out.

Can you see where the mistake is? I get no compile errors.

Hope u help thx

EDIT: Found the error myself,
infact the mistake was a missing
PHP Code:

 return HAM_HANDLED 

and a fail calculation in menu.

PHP Code:

/*************************************
* Point Mod for Hide And Seek
* by Xoxolala
*
* Version: 1.0
*/
//************************************
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < fun >
#include < hamsandwich >
#include < engine >
#include < fakemeta >
#include < nvault >

#define PLUGIN "Point Mod"
#define PREFIX "Point Mod"
#define PREFIXSHORT "[PM]"
#define PLUGINVALUE "Point"
#define AUTHOR "Xoxolala"
#define VERSION "1.0"
#define VAULTNAME "pointmod"

//All items with prices & stuff
enum _:gItemListT
{
    
HEALTH
}

new const 
gItemNameT gItemListT ] [ ] =
{
    
"Extra Health"
}

new const 
gItemCostT gItemListT ] =
{
    
20
}

new const 
gItemLevelT gItemListT ] =
{
    
10
}

new const 
gItemAmountT gItemListT ] =
{
    
10
}

new const 
gItemShortT gItemListT ] [ ] =
{
    
" HP"
}

enum _:gItemListCT 
{
    
HEALTH
}

new const 
gItemNameCT gItemListCT ] [ ] =
{
    
"Extra Health"
}

new const 
gItemCostCT gItemListCT ] =
{
    
20
}

new const 
gItemLevelCT gItemListCT ] =
{
    
6
}

new const 
gItemAmountCT gItemListCT ] =
{
    
10
}

new const 
gItemShortCT gItemListCT ] [ ] =
{
    
" HP"
}

const 
MAX_CLIENTS 32

//Vault
new gVault

new gUserLevelT MAX_CLIENTS ] [ gItemListT ]
new 
gUserLevelCT MAX_CLIENTS ] [ gItemListCT ]
new 
gValue MAX_CLIENTS ]

new 
gSteamID MAX_CLIENTS ] [ 36 ]
new 
gIsUser MAX_CLIENTS ]


public 
plugin_init ( )
{
    
register_clcmd "say /pm""MainMenuStart" )
    
register_clcmd "say /resetlvl""cmdtestreset" )
    
gVault nvault_open VAULTNAME )

    if ( 
gVault == INVALID_HANDLE )
        
set_fail_state "Error opening gVault for Point Mod" )
}

public 
cmdtestreset id )
{
    for ( new 
iItemT 0iItemT gItemListTiItemT++ )
    {
        
gUserLevelT id ] [ iItemT ] = 0
    
}
}

public 
plugin_end ( )
{
    
nvault_close gVault )
}

public 
client_authorized id )
{
    
get_user_authid idgSteamID id ], charsmax gSteamID [ ] ) )
    
LoadUser id )

    if ( 
access idADMIN_LEVEL_A ) )
        
gIsUser id ] = true
}

public 
client_disconnect id )
{
    
SaveUser id )
}

public 
LoadUser id )
{
    static 
data 256 ], timestamp
    
if ( nvault_lookup gVaultgSteamID id ], datasizeof data ) - 1timestamp ) )
    {
        
LoadUserData iddata )
    }
    else 
    {
        
NewPlayer id )
    }
}

public 
NewPlayer id )
{
    
gValue id ] = 0

    
for ( new iItemT 0iItemT gItemListTiItemT++ )
    {
        
gUserLevelT id ] [ iItemT ] = 0
    
}

    for ( new 
iItemCT 0iItemCT gItemListCTiItemCT++ )
    {
        
gUserLevelCT id ] [ iItemCT ] = 0
    
}
}

LoadUserData iddata 256 ] )
{
    static 
num ]
    
strbreak datanumsizeof num ) - 1datasizeof data ) - )

    
gValue id ] = str_to_num num )

    for ( new 
iItemT 0iItemT gItemListTiItemT++ )
    {
        
strbreak datanumsizeof num ) - 1datasizeof data ) - )
        
gUserLevelT id ] [ iItemT ] = clamp str_to_num num ), 0gItemLevelT iItemT ] )
    }

    for ( new 
iItemCT 0iItemCT gItemListCTiItemCT++ )
    {
        
strbreak datanumsizeof num ) - 1datasizeof data ) - )
        
gUserLevelCT id ] [ iItemCT ] = clamp str_to_num num ), 0gItemLevelCT iItemCT ] )
    }
}

public 
SaveUser id )
{
    static 
data 256 ]
    new 
len formatex datasizeof data ) - 1"%i"gValue id ] )

    for ( new 
iItemT 0iItemT gItemListTiItemT++ )
    {
        
len += formatex data len ], sizeof data ) - len 1" %i"gUserLevelT id ] [ iItemT ] )
    }

    for ( new 
iItemCT 0iItemCT gItemListCTiItemCT++ )
    {
        
len += formatex data len ], sizeof data ) - len 1" %i"gUserLevelCT id ] [ iItemCT ] )
    }

    
nvault_set gVaultgSteamID id ], data )
}

public 
MainMenuStart id 
{
    new 
title 512 
    
formatex title511"\r%s\w Main Menu^nCurrent %s:\y %i^n^n"PREFIXSHORTPLUGINVALUEgValue id ] )
    new 
menu menu_create title"MainMenuHandle" )


    
menu_additem menu"\wTerrorists""1")
    
menu_additem menu"\wCounter-Terrorists""2")
    
menu_addblank menu)
    
menu_addblank menu)
    
menu_additem menu"\yPlayer Info""3")
    
menu_addblank menu)
    
menu_addblank menu)
    
menu_addblank menu)
    
menu_addblank menu)

    
menu_display idmenu)
}

public 
MainMenuHandle idmenuitem )
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy menu )
        return 
PLUGIN_HANDLED 
    
}

    new 
data ], gName 64 ]
    new 
accesscallback

    menu_item_getinfo 
menuitemaccessdatasizeof data ) - 1gNamesizeof gName ) - 1callback )

    new 
key str_to_num data )
    switch ( 
key )
    {
        case 
1:
        {
            
ItemMenuTStart id )
        }
        case 
2:
        {
            
client_print idprint_chat"You clicked CT Upgrades. This is still under construction!" )
        }
        case 
3:
        {
            
client_print idprint_chat"You clicked Player Info. This is still under construction!" )
        }
    }
    return 
PLUGIN_HANDLED 
}

public 
ItemMenuTStart id )
{
    new 
title 512 ]; formatex titlesizeof title ) - 1"\r%s\w Main Menu^nYour %s:\y %i^n^n"PREFIXPLUGINVALUEgValue id ] )

    new 
menu menu_create title"ItemMenuTHandle" )
    new 
inumb ], icostgOption 80 ], iamountilvlilvl2

    
for ( new iItemT 0iItemT gItemListTiItemT++ )
    {
        
num_to_str iItemTinumbsizeof inumb ) - )
        
ilvl gUserLevelT id ] [ iItemT ]
        
ilvl2 gUserLevelT id ] [ iItemT ] + 1
        icost 
gItemCostT iItemT ] * ( << (ilvl2 ) )
        
iamount gUserLevelT id ] [ iItemT ] * gItemAmountT iItemT ]

        if ( 
gUserLevelT id ] [ iItemT ] == gItemLevelT iItemT ] )
        {
            
formatex gOptionsizeof gOption ) - 1"\y%s:\d Level %i\r (%i%s)"gItemNameT iItemT ], ilvliamountgItemShortT iItemT ] )
        }
        else if ( 
gValue id ] < icost )
        {
            
formatex gOptionsizeof gOption ) - 1"\d%s: Level %i\r (%i%s)\w %i %s"gItemNameT iItemT ], ilvliamountgItemShortT iItemT ], icostPLUGINVALUE )
        }
        else if ( 
gUserLevelT id ] [ iItemT ] < gItemLevelT iItemT ] )
        {
            
formatex gOptionsizeof gOption ) - 1"\w%s Level %i\r (%i%s)\w %i %s"gItemNameT iItemT ], ilvliamountgItemShortT iItemT ], icostPLUGINVALUE )
        }
        
menu_additem menugOptioninumb )
    }
    
menu_display idmenu)
}

public 
ItemMenuTHandle idmenuitem )
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy menu )
        
MainMenuStart id )
        return 
PLUGIN_HANDLED
    
}

    new 
data ], gName 64 ]
    new 
accesscallback
    menu_item_getinfo 
menuitemaccessdatasizeof data ) - 1gNamesizeof gName ) - 1callback )

    new 
iItemT str_to_num data ), icostilvl
    ilvl 
gUserLevelT id ] [ iItemT ] + 1
    icost 
gItemCostT iItemT ] * ( << ( ilvl ) )

    if ( 
gUserLevelT id ] [ iItemT ] == gItemLevelT iItemT ] )
    {
        
client_print idprint_chat"You have the max level already!" )
    }
    else if ( 
gValue id ] < icost )
    {
        
client_print idprint_chat"You cant afford that!" )
    }
    else
    {
        
gValue id ] -= icost
        gUserLevelT 
id ] [ iItemT ] += 1
        client_print 
idprint_chat"You upgraded %s to level %i! Nice!"gItemNameT iItemT ], gUserLevelT id ] [ iItemT ] )
    }
    
MainMenuStart id )
    return 
PLUGIN_HANDLED



ConnorMcLeod 11-15-2013 00:45

Re: Need help with this plugin
 
You are not allowed to remove your code as you did, just because you found the solution, you are not on your personal forum ;)
Instead, tell people how you have fixed your problem.

And please take some time to read rules : https://forums.alliedmods.net/misc.php?do=showrules

Quote:

Originally Posted by xoxolala (Post 2060973)
Hello AM

I need help with my plugin.

Bug:
Everytime I enter a menu, it gives me lvl 10 in Health. (I've only added HP for T's so far. Just for testing that out.

Can you see where the mistake is? I get no compile errors.

Hope u help thx

EDIT: Found the error myself

PHP Code:

/*************************************
* Point Mod for Hide And Seek
* by Dinnk
*
* Version: 1.0
*/
//************************************
#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < fun >
#include < hamsandwich >
#include < engine >
#include < fakemeta >
#include < nvault >

#define PLUGIN "Point Mod"
#define PREFIX "Point Mod"
#define PREFIXSHORT "[PM]"
#define PLUGINVALUE "Point"
#define AUTHOR "dinnk"
#define VERSION "1.0"
#define VAULTNAME "pointmod"

//All items with prices & stuff
enum _:gItemListT
{
    
HEALTH
}

new const 
gItemNameT gItemListT ] [ ] =
{
    
"Extra Health"
}

new const 
gItemCostT gItemListT ] =
{
    
20
}

new const 
gItemLevelT gItemListT ] =
{
    
10
}

new const 
gItemAmountT gItemListT ] =
{
    
10
}

new const 
gItemShortT gItemListT ] [ ] =
{
    
" HP"
}

enum _:gItemListCT 
{
    
HEALTH
}

new const 
gItemNameCT gItemListCT ] [ ] =
{
    
"Extra Health"
}

new const 
gItemCostCT gItemListCT ] =
{
    
20
}

new const 
gItemLevelCT gItemListCT ] =
{
    
6
}

new const 
gItemAmountCT gItemListCT ] =
{
    
10
}

new const 
gItemShortCT gItemListCT ] [ ] =
{
    
" HP"
}

const 
MAX_CLIENTS 32

//Vault
new gVault

new gUserLevelT MAX_CLIENTS ] [ gItemListT ]
new 
gUserLevelCT MAX_CLIENTS ] [ gItemListCT ]
new 
gValue MAX_CLIENTS ]

new 
gSteamID MAX_CLIENTS ] [ 36 ]
new 
gIsUser MAX_CLIENTS ]


public 
plugin_init ( )
{
    
register_clcmd "say /pm""MainMenuStart" )
    
register_clcmd "say /resetlvl""cmdtestreset" )
    
gVault nvault_open VAULTNAME )

    if ( 
gVault == INVALID_HANDLE )
        
set_fail_state "Error opening gVault for Point Mod" )
}

public 
cmdtestreset id )
{
    for ( new 
iItemT 0iItemT gItemListTiItemT++ )
    {
        
gUserLevelT id ] [ iItemT ] = 0
    
}
}

public 
plugin_end ( )
{
    
nvault_close gVault )
}

public 
client_authorized id )
{
    
get_user_authid idgSteamID id ], charsmax gSteamID [ ] ) )
    
LoadUser id )

    if ( 
access idADMIN_LEVEL_A ) )
        
gIsUser id ] = true
}

public 
client_disconnect id )
{
    
SaveUser id )
}

public 
LoadUser id )
{
    static 
data 256 ], timestamp
    
if ( nvault_lookup gVaultgSteamID id ], datasizeof data ) - 1timestamp ) )
    {
        
LoadUserData iddata )
    }
    else 
    {
        
NewPlayer id )
    }
}

public 
NewPlayer id )
{
    
gValue id ] = 0

    
for ( new iItemT 0iItemT gItemListTiItemT++ )
    {
        
gUserLevelT id ] [ iItemT ] = 0
    
}

    for ( new 
iItemCT 0iItemCT gItemListCTiItemCT++ )
    {
        
gUserLevelCT id ] [ iItemCT ] = 0
    
}
}

LoadUserData iddata 256 ] )
{
    static 
num ]
    
strbreak datanumsizeof num ) - 1datasizeof data ) - )

    
gValue id ] = str_to_num num )

    for ( new 
iItemT 0iItemT gItemListTiItemT++ )
    {
        
strbreak datanumsizeof num ) - 1datasizeof data ) - )
        
gUserLevelT id ] [ iItemT ] = clamp str_to_num num ), 0gItemLevelT iItemT ] )
    }

    for ( new 
iItemCT 0iItemCT gItemListCTiItemCT++ )
    {
        
strbreak datanumsizeof num ) - 1datasizeof data ) - )
        
gUserLevelCT id ] [ iItemCT ] = clamp str_to_num num ), 0gItemLevelCT iItemCT ] )
    }
}

public 
SaveUser id )
{
    static 
data 256 ]
    new 
len formatex datasizeof data ) - 1"%i"gValue id ] )

    for ( new 
iItemT 0iItemT gItemListTiItemT++ )
    {
        
len += formatex data len ], sizeof data ) - len 1" %i"gUserLevelT id ] [ iItemT ] )
    }

    for ( new 
iItemCT 0iItemCT gItemListCTiItemCT++ )
    {
        
len += formatex data len ], sizeof data ) - len 1" %i"gUserLevelCT id ] [ iItemCT ] )
    }

    
nvault_set gVaultgSteamID id ], data )
}

public 
MainMenuStart id 
{
    new 
title 512 
    
formatex title511"\r%s\w Main Menu^nCurrent %s:\y %i^n^n"PREFIXSHORTPLUGINVALUEgValue id ] )
    new 
menu menu_create title"MainMenuHandle" )


    
menu_additem menu"\wTerrorists""1")
    
menu_additem menu"\wCounter-Terrorists""2")
    
menu_addblank menu)
    
menu_addblank menu)
    
menu_additem menu"\yPlayer Info""3")
    
menu_addblank menu)
    
menu_addblank menu)
    
menu_addblank menu)
    
menu_addblank menu)

    
menu_display idmenu)
}

public 
MainMenuHandle idmenuitem )
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy menu )
        return 
PLUGIN_HANDLED 
    
}

    new 
data ], gName 64 ]
    new 
accesscallback

    menu_item_getinfo 
menuitemaccessdatasizeof data ) - 1gNamesizeof gName ) - 1callback )

    new 
key str_to_num data )
    switch ( 
key )
    {
        case 
1:
        {
            
ItemMenuTStart id )
        }
        case 
2:
        {
            
client_print idprint_chat"You clicked CT Upgrades. This is still under construction!" )
        }
        case 
3:
        {
            
client_print idprint_chat"You clicked Player Info. This is still under construction!" )
        }
    }
    return 
PLUGIN_HANDLED 
}

public 
ItemMenuTStart id )
{
    new 
title 512 ]; formatex titlesizeof title ) - 1"\r%s\w Main Menu^nYour %s:\y %i^n^n"PREFIXPLUGINVALUEgValue id ] )

    new 
menu menu_create title"ItemMenuTHandle" )
    new 
inumb ], icostgOption 80 ], iamountilvlilvl2

    
for ( new iItemT 0iItemT gItemListTiItemT++ )
    {
        
num_to_str iItemTinumbsizeof inumb ) - )
        
ilvl gUserLevelT id ] [ iItemT ]
        
ilvl2 gUserLevelT id ] [ iItemT ] + 1
        icost 
gItemCostT iItemT ] * ( << (ilvl2 ) )
        
iamount gUserLevelT id ] [ iItemT ] * gItemAmountT iItemT ]

        if ( 
gUserLevelT id ] [ iItemT ] == gItemLevelT iItemT ] )
        {
            
formatex gOptionsizeof gOption ) - 1"\y%s:\d Level %i\r (%i%s)"gItemNameT iItemT ], ilvliamountgItemShortT iItemT ] )
        }
        else if ( 
gValue id ] < icost )
        {
            
formatex gOptionsizeof gOption ) - 1"\d%s: Level %i\r (%i%s)\w %i %s"gItemNameT iItemT ], ilvliamountgItemShortT iItemT ], icostPLUGINVALUE )
        }
        else if ( 
gUserLevelT id ] [ iItemT ] < gItemLevelT iItemT ] )
        {
            
formatex gOptionsizeof gOption ) - 1"\w%s Level %i\r (%i%s)\w %i %s"gItemNameT iItemT ], ilvliamountgItemShortT iItemT ], icostPLUGINVALUE )
        }
        
menu_additem menugOptioninumb )
    }
    
menu_display idmenu)
}

public 
ItemMenuTHandle idmenuitem )
{
    if ( 
item == MENU_EXIT )
    {
        
menu_destroy menu )
        
MainMenuStart id )
        return 
PLUGIN_HANDLED
    
}

    new 
data ], gName 64 ]
    new 
accesscallback
    menu_item_getinfo 
menuitemaccessdatasizeof data ) - 1gNamesizeof gName ) - 1callback )

    new 
iItemT str_to_num data ), icostilvl
    ilvl 
gUserLevelT id ] [ iItemT ] + 1
    icost 
gItemCostT iItemT ] * ( << ( ilvl ) )

    if ( 
gUserLevelT id ] [ iItemT ] == gItemLevelT iItemT ] )
    {
        
client_print idprint_chat"You have the max level already!" )
    }
    else if ( 
gValue id ] < icost )
    {
        
client_print idprint_chat"You cant afford that!" )
    }
    else
    {
        
gValue id ] -= icost
        gUserLevelT 
id ] [ iItemT ] += 1
        client_print 
idprint_chat"You upgraded %s to level %i! Nice!"gItemNameT iItemT ], gUserLevelT id ] [ iItemT ] )
    }
    
MainMenuStart id )
    return 
PLUGIN_HANDLED





All times are GMT -4. The time now is 23:18.

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