| 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 + 1 ] [ gItemListT ]
new gUserLevelCT [ MAX_CLIENTS + 1 ] [ gItemListCT ]
new gValue [ MAX_CLIENTS + 1 ]
new gSteamID [ MAX_CLIENTS + 1 ] [ 36 ]
new gIsUser [ MAX_CLIENTS + 1 ]
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 = 0; iItemT < gItemListT; iItemT++ )
{
gUserLevelT [ id ] [ iItemT ] = 0
}
}
public plugin_end ( )
{
nvault_close ( gVault )
}
public client_authorized ( id )
{
get_user_authid ( id, gSteamID [ id ], charsmax ( gSteamID [ ] ) )
LoadUser ( id )
if ( access ( id, ADMIN_LEVEL_A ) )
gIsUser [ id ] = true
}
public client_disconnect ( id )
{
SaveUser ( id )
}
public LoadUser ( id )
{
static data [ 256 ], timestamp
if ( nvault_lookup ( gVault, gSteamID [ id ], data, sizeof ( data ) - 1, timestamp ) )
{
LoadUserData ( id, data )
}
else
{
NewPlayer ( id )
}
}
public NewPlayer ( id )
{
gValue [ id ] = 0
for ( new iItemT = 0; iItemT < gItemListT; iItemT++ )
{
gUserLevelT [ id ] [ iItemT ] = 0
}
for ( new iItemCT = 0; iItemCT < gItemListCT; iItemCT++ )
{
gUserLevelCT [ id ] [ iItemCT ] = 0
}
}
LoadUserData ( id, data [ 256 ] )
{
static num [ 6 ]
strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 )
gValue [ id ] = str_to_num ( num )
for ( new iItemT = 0; iItemT < gItemListT; iItemT++ )
{
strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 )
gUserLevelT [ id ] [ iItemT ] = clamp ( str_to_num ( num ), 0, gItemLevelT [ iItemT ] )
}
for ( new iItemCT = 0; iItemCT < gItemListCT; iItemCT++ )
{
strbreak ( data, num, sizeof ( num ) - 1, data, sizeof ( data ) - 1 )
gUserLevelCT [ id ] [ iItemCT ] = clamp ( str_to_num ( num ), 0, gItemLevelCT [ iItemCT ] )
}
}
public SaveUser ( id )
{
static data [ 256 ]
new len = formatex ( data, sizeof ( data ) - 1, "%i", gValue [ id ] )
for ( new iItemT = 0; iItemT < gItemListT; iItemT++ )
{
len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", gUserLevelT [ id ] [ iItemT ] )
}
for ( new iItemCT = 0; iItemCT < gItemListCT; iItemCT++ )
{
len += formatex ( data [ len ], sizeof ( data ) - len - 1, " %i", gUserLevelCT [ id ] [ iItemCT ] )
}
nvault_set ( gVault, gSteamID [ id ], data )
}
public MainMenuStart ( id )
{
new title [ 512 ]
formatex ( title, 511, "\r%s\w Main Menu^nCurrent %s:\y %i^n^n", PREFIXSHORT, PLUGINVALUE, gValue [ id ] )
new menu = menu_create ( title, "MainMenuHandle" )
menu_additem ( menu, "\wTerrorists", "1", 0 )
menu_additem ( menu, "\wCounter-Terrorists", "2", 0 )
menu_addblank ( menu, 0 )
menu_addblank ( menu, 0 )
menu_additem ( menu, "\yPlayer Info", "3", 0 )
menu_addblank ( menu, 1 )
menu_addblank ( menu, 1 )
menu_addblank ( menu, 1 )
menu_addblank ( menu, 1 )
menu_display ( id, menu, 0 )
}
public MainMenuHandle ( id, menu, item )
{
if ( item == MENU_EXIT )
{
menu_destroy ( menu )
return PLUGIN_HANDLED
}
new data [ 6 ], gName [ 64 ]
new access, callback
menu_item_getinfo ( menu, item, access, data, sizeof ( data ) - 1, gName, sizeof ( gName ) - 1, callback )
new key = str_to_num ( data )
switch ( key )
{
case 1:
{
ItemMenuTStart ( id )
}
case 2:
{
client_print ( id, print_chat, "You clicked CT Upgrades. This is still under construction!" )
}
case 3:
{
client_print ( id, print_chat, "You clicked Player Info. This is still under construction!" )
}
}
return PLUGIN_HANDLED
}
public ItemMenuTStart ( id )
{
new title [ 512 ]; formatex ( title, sizeof ( title ) - 1, "\r%s\w Main Menu^nYour %s:\y %i^n^n", PREFIX, PLUGINVALUE, gValue [ id ] )
new menu = menu_create ( title, "ItemMenuTHandle" )
new inumb [ 5 ], icost, gOption [ 80 ], iamount, ilvl, ilvl2
for ( new iItemT = 0; iItemT < gItemListT; iItemT++ )
{
num_to_str ( iItemT, inumb, sizeof ( inumb ) - 1 )
ilvl = gUserLevelT [ id ] [ iItemT ]
ilvl2 = gUserLevelT [ id ] [ iItemT ] + 1
icost = gItemCostT [ iItemT ] * ( 1 << (ilvl2 - 1 ) )
iamount = gUserLevelT [ id ] [ iItemT ] * gItemAmountT [ iItemT ]
if ( gUserLevelT [ id ] [ iItemT ] == gItemLevelT [ iItemT ] )
{
formatex ( gOption, sizeof ( gOption ) - 1, "\y%s:\d Level %i\r (%i%s)", gItemNameT [ iItemT ], ilvl, iamount, gItemShortT [ iItemT ] )
}
else if ( gValue [ id ] < icost )
{
formatex ( gOption, sizeof ( gOption ) - 1, "\d%s: Level %i\r (%i%s)\w %i %s", gItemNameT [ iItemT ], ilvl, iamount, gItemShortT [ iItemT ], icost, PLUGINVALUE )
}
else if ( gUserLevelT [ id ] [ iItemT ] < gItemLevelT [ iItemT ] )
{
formatex ( gOption, sizeof ( gOption ) - 1, "\w%s Level %i\r (%i%s)\w %i %s", gItemNameT [ iItemT ], ilvl, iamount, gItemShortT [ iItemT ], icost, PLUGINVALUE )
}
menu_additem ( menu, gOption, inumb )
}
menu_display ( id, menu, 0 )
}
public ItemMenuTHandle ( id, menu, item )
{
if ( item == MENU_EXIT )
{
menu_destroy ( menu )
MainMenuStart ( id )
return PLUGIN_HANDLED
}
new data [ 6 ], gName [ 64 ]
new access, callback
menu_item_getinfo ( menu, item, access, data, sizeof ( data ) - 1, gName, sizeof ( gName ) - 1, callback )
new iItemT = str_to_num ( data ), icost, ilvl
ilvl = gUserLevelT [ id ] [ iItemT ] + 1
icost = gItemCostT [ iItemT ] * ( 1 << ( ilvl - 1 ) )
if ( gUserLevelT [ id ] [ iItemT ] == gItemLevelT [ iItemT ] )
{
client_print ( id, print_chat, "You have the max level already!" )
}
else if ( gValue [ id ] < icost )
{
client_print ( id, print_chat, "You cant afford that!" )
}
else
{
gValue [ id ] -= icost
gUserLevelT [ id ] [ iItemT ] += 1
client_print ( id, print_chat, "You upgraded %s to level %i! Nice!", gItemNameT [ iItemT ], gUserLevelT [ id ] [ iItemT ] )
}
MainMenuStart ( id )
return PLUGIN_HANDLED
}
|
|