Thread: points systeme
View Single Post
Author Message
LOFIm
Junior Member
Join Date: Dec 2020
Old 12-10-2020 , 17:04   points systeme
Reply With Quote #1

I don't know where's the error ...
CAN SOMEONE HELP ME PLS


PHP Code:

/*       ZP Dev Team & AlferD Point System Version 1.0 */
/*                            |                        */
/*                 Thanks for ZP Dev Team              */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <cromchat>
#include <nvault>
#include <hamsandwich>
#include <fakemeta>
#include <ad_points>

#define UPDATE_HUD 1.0

#define KILL_POINTS 3

#define PLUGIN "Points System"
#define VERSION "1.0"
#define AUTHOR "AlferD&ZP Dev Team"

#define POINTS ADMIN_IMMUNITY
#define SHOW_MENU ADMIN_KICK

#define ADP_INVALID_ITEM -1

#define ADP_ITEM_AVAILABLE 0
#define ADP_ITEM_NOT_AVAILABLE 1
#define ADP_ITEM_DONT_SHOW 2
#define ADP_PLUGIN_HANDLED 97
#define LIBRARY_ITEMS "adp_items"

#define MENU_PAGE_ITEMS g_menu_data[id]

#define MAX_PLAYERS 32

new const ITEM_FILE[] = "adp_items.ini"

new g_menu_data[MAX_PLAYERS+1]

enum _:TOTAL_FORWARDS
{
    
FW_ITEM_SELECT_PRE 0,
    
FW_ITEM_SELECT_POST,
    
FW_EXTRA_ITEM_SELECTED
}
new 
g_Forwards[TOTAL_FORWARDS]
new 
g_ForwardResult

new Array:g_ItemRealName
new Array:g_ItemName
new Array:g_ItemPoint
new Array:g_ItemID
new g_ItemCount
new g_AdditionalMenuText[32]

const 
OFFSET_CSMENUCODE 205

const MAX_NAME 32

new g_Point[64], g_VaultKey[64],g_VaultData[256], szAuth[64], szPlayerPoint[64], szPlayerName[64], szAdminName[64], szPlayerAuth[32], szAdminAuth[32], szTime[32], szLog[128], gidPlayer[33];

new 
g_nVaultgHudSync

new const szLogFile[ ]        = "addons/amxmodx/configs/AD-Points/Points_log-%s.log"

new const szLogFile_Donate[ ]    = "addons/amxmodx/configs/AD-Points/Donate_log-%s.log"

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
    
register_clcmd("amx_give_points""GivePoint"POINT"<nick> <value>");
    
register_clcmd("amx_take_points""TakePoint"POINT"<nick> <value>");
    
    
register_clcmd("donate_points""DonatePoint"0"<nick> <value>");
    
register_clcmd("say /donatepoints""DonatePoint_Menu");
    
register_clcmd("say /donatep""DonatePoint_Menu");
    
register_clcmd("say /dpm""DonatePoint_Menu");
    
    
register_clcmd("_playerpoint""PlayerPoint");
    
    
register_clcmd("say /showpoints""ShowPoints"SHOW_MENU);
    
register_clcmd("say /sp""ShowPoints"SHOW_MENU);
    
    
register_clcmd("say /items""Shop_Item");
    
register_clcmd("say /ps""Shop_Item");
    
register_clcmd("say /pshop""Shop_Item");
    
    
mkdir("addons/amxmodx/configs/AD-Point");
     
    
register_event("DeathMsg""Kill""a");
    
    
g_nVault nvault_open("AD_Point");
    
    
set_task(UPDATE_HUD"UpdatePoint"___"b");
    
    
gHudSync CreateHudSyncObj();
    
    
CC_SetPrefix("&x07[&x04AD-Point&x07]");
    
    
g_Forwards[FW_EXTRA_ITEM_SELECTED] = CreateMultiForward("adp_extra_item_selected"ET_CONTINUEFP_CELLFP_CELL);
    
    
g_Forwards[FW_ITEM_SELECT_PRE] = CreateMultiForward("adp_fw_items_select_pre"ET_CONTINUEFP_CELLFP_CELLFP_CELL);
    
g_Forwards[FW_ITEM_SELECT_POST] = CreateMultiForward("adp_fw_items_select_post"ET_IGNOREFP_CELLFP_CELLFP_CELL);
}

public 
plugin_natives()
{
    
register_library("adp_items"); // ZP Dev Team
    
register_native("ad_get_user_points""native_get_user_points"1);
    
register_native("ad_set_user_points""native_set_user_points"1);
    
register_native("adp_items_register""native_items_register"); // ZP Dev Team
    
register_native("adp_items_get_id""native_items_get_id"); // ZP Dev Team
    
register_native("adp_items_get_name""native_items_get_name"); // ZP Dev Team
    
register_native("adp_items_get_real_name""native_items_get_real_name"); // ZP Dev Team
    
register_native("adp_items_get_point""native_items_get_point"); // ZP Dev Team
    
register_native("adp_items_show_menu""native_items_show_menu"); // ZP Dev Team
    
register_native("adp_items_force_buy""native_items_force_buy"); // ZP Dev Team
    
register_native("adp_items_menu_text_add""native_items_menu_text_add"); // ZP Dev Team
    
register_native("adp_register_extra_item""native_register_extra_item"); // ZP Dev Team
    
    
g_ItemRealName ArrayCreate(321); // ZP Dev Team
    
g_ItemName ArrayCreate(321); // ZP Dev Team
    
g_ItemPoint ArrayCreate(11); // ZP Dev Team
}

public 
client_putinserver(id)
{
    
g_Point[id] = 0
    LoadPoint
(id)
}

public 
Kill()
{
    new 
attacker read_data)
    new 
victim read_data)
    
    if( 
cs_get_user_teamattacker ) != cs_get_user_teamvictim ) )
    {
        
g_Pointattacker ] += KILL_POINT
    
}
    
    return 
PLUGIN_HANDLED;
}

public 
ShowPoints(id)
{
    new 
iPlayers[32], iPnum
    get_players
(iPlayersiPnum"a")
    
    new 
iMenu menu_create("Show Player Points""Handled_Menu")
    
    for(new 
szItem[128], zName[MAX_NAME], iPlayeriiPnumi++)
    {
        
iPlayer iPlayers[i]
        
        
get_user_name(iPlayerzNamecharsmax(zName))
        
        
formatex(szItemcharsmax(szItem), "%s  [ %d Points ]"zNameg_Point[iPlayer])
        
        
menu_additem(iMenuszItem)
    }
    
    
menu_display(idiMenu)
    return 
PLUGIN_HANDLED
}

public 
Handled_Menu(idwMenuitem)
{
    
menu_destroy(wMenu)
    return 
PLUGIN_HANDLED
}

public 
DonatePoint_Menu(id)
{
    new 
Item[512]
    new 
szItem[128]
    
    
formatex(Itemcharsmax(Item), "\rDonate \yPoints \wMenu^nYour Points: \r%d\y^n"g_Point[id])
    new 
wMenu menu_create(Item"Handled_Menu_Donate")
    new 
Pos[3]
    
    new 
iPlayers[MAX_PLAYERS], iPnum
    get_players
(iPlayersiPnum);
    
    for (new 
szName[MAX_NAME_LENGTH], iPlayeriiPnumi++)
    {
        
iPlayer iPlayers[i]
        
        
num_to_str(iPlayerPoscharsmax(Pos))
        
get_user_name(iPlayerszNamecharsmax(szName))
        
        
formatex(szItemcharsmax(szItem), "\w%s \r[ \y%d Points \r]"szNameg_Point[iPlayer])
        
menu_additem(wMenuszItemPos)

    }
    
    
menu_setprop(wMenuMPROP_EXITszItem)
    
menu_display(idwMenu0)
}

public 
Handled_Menu_Donate(idwMenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(wMenu)

        return 
PLUGIN_HANDLED
    
}
    
    new 
Data[6], Name[64]
    new 
AccessCallback
    menu_item_getinfo
(wMenuitemAccessDatasizeof(Data)-1Namesizeof(Name)-1Callback)
    
    new 
key str_to_num(Data)
    
gidPlayer[key] = id
    
    client_cmd
(id"messagemode _playerpoint")
    
    
menu_destroy(wMenu)
    return 
PLUGIN_HANDLED
}

public 
DonatePoint(id)
{
    new 
arg[32], arg2[32]
    
read_argv(1,arg,32)
    
read_argv(2,arg2,31)

    new 
name cmd_target(id,arg,2)
    if(!
name) return PLUGIN_HANDLED

    
new value str_to_num(arg2)
    
    
get_user_name(nameszPlayerNamecharsmax(szPlayerName))
    
get_user_name(idszAdminNamecharsmax(szAdminName))

    
get_user_authid(nameszPlayerAuthcharsmax(szPlayerName))
    
get_user_authid(idszAdminAuthcharsmax(szAdminName))
    
    
get_time("%Y%d%m"szTimecharsmax(szTime))
    
    
formatex(szLogcharsmax(szLog), szLogFile_DonateszTime)
    
    if(
g_Point[id] >= 0)
    {
        
g_Point[id] -= value
        g_Point
[name] += value
    
        log_to_file
(szLog"Donate Points: Name: [ %s ] | SteamID: [ %s ] |Donate| Name: [ %s ] SteamID: [ %s ] %i Points"szAdminNameszAdminAuthszPlayerNameszPlayerAuthvalue)
    
        
CC_SendMessage(id" &x04You Give &x01%s &x05%i &x04Points"szPlayerNamevalue)
        
        
CC_SendMessage(name" &x04%s &x05Give You &x04%i &x01Points"szAdminNamevalueszPlayerName)
    }
    
    else 
    {
        
CC_SendMessage(id" &x04You Have No Points")
    }
    
    return 
PLUGIN_HANDLED;
}

public 
GivePoint(id,level,cid)
{
    if(!
cmd_access(id,level,cid,3))
        return 
PLUGIN_HANDLED;

    new 
arg[32], arg2[32]
    
read_argv(1,arg,32)
    
read_argv(2,arg2,31)

    new 
name cmd_target(id,arg,2)
    if(!
name) return PLUGIN_HANDLED

    
new value str_to_num(arg2)

    
g_Point[name] += value

    get_user_name
(nameszPlayerNamecharsmax(szPlayerName))
    
get_user_name(idszAdminNamecharsmax(szAdminName))

    
get_user_authid(nameszPlayerAuthcharsmax(szPlayerName))
    
get_user_authid(idszAdminAuthcharsmax(szAdminName))
    
    
get_time("%Y%d%m"szTimecharsmax(szTime))
    
    
formatex(szLogcharsmax(szLog), szLogFileszTime);
    
    
log_to_file(szLog"Give Points: Name: [ %s ] | SteamID: [ %s ] |Give| Name: [ %s ] SteamID: [ %s ] %i Points"szAdminNameszAdminAuthszPlayerNameszPlayerAuthvalue)
    
    
CC_SendMessage(0"ADMIN %s Give %i Points a %s"szAdminNamevalueszPlayerName)

    return 
PLUGIN_HANDLED;
}

public 
TakePoint(id,level,cid)
{
    if(!
cmd_access(id,level,cid,3))
        return 
PLUGIN_HANDLED;

    new 
arg[32], arg2[32]
    
read_argv(1,arg,32)
    
read_argv(2,arg2,31)

    new 
name cmd_target(id,arg,2)
    if(!
name) return PLUGIN_HANDLED

    
new value str_to_num(arg2)

    
g_Point[name] -= value

    get_user_name
(nameszPlayerNamecharsmax(szPlayerName))
    
get_user_name(idszAdminNamecharsmax(szAdminName))

    
get_user_authid(nameszPlayerAuthcharsmax(szPlayerName))
    
get_user_authid(idszAdminAuthcharsmax(szAdminName))
    
    
get_time("%Y%d%m"szTimecharsmax(szTime))
    
    
formatex(szLogcharsmax(szLog), szLogFileszTime);
    
    
log_to_file(szLog"Take Points: Name: [ %s ] | SteamID: [ %s ] |Take| Name: [ %s ] SteamID: [ %s ] %i Points"szAdminNameszAdminAuthszPlayerNameszPlayerAuthvalue)
    
    
CC_SendMessage(0"ADMIN %s Take %i Points a %s"szAdminNamevalueszPlayerName)

    return 
PLUGIN_HANDLED
}

public 
SavePoint(id)
{
    new 
szAuth[32]
    
get_user_authid(idszAuthcharsmax(szAuth))
    
    
format(g_VaultKeycharsmax(g_VaultKey), "%s"szAuth)
    
    
format(g_VaultData,charsmax(g_VaultData),"%i#",g_Point[id])
    
    
nvault_set(g_nVaultg_VaultKeyg_VaultData)
}

public 
LoadPoint(id)
{
    
get_user_authid(idszAuthcharsmax(szAuth))
    
    
format(g_VaultKeycharsmax(g_VaultKey),"%s"szAuth)
    
    
format(g_VaultDatacharsmax(g_VaultData),"%i#"g_Point[id])
    
    
nvault_get(g_nVaultg_VaultKeyg_VaultData,charsmax(g_VaultData))
    
    
replace_all(g_VaultDatacharsmax(g_VaultData), "#"" ")
    
    
parse(g_VaultDataszPlayerPointcharsmax(szPlayerPoint))
    
    
g_Point[id] = str_to_num(szPlayerPoint)
}

public 
UpdatePoint(id)
{
    new 
iPlayers32 ], iNumid;
    
get_playersiPlayersiNum );
    
    for( new 
iiNumi++ )
    {
        
id iPlayers]
        if (
is_user_aliveid ) )
        {
    
set_hudmessage20916700.420.006.0UPDATE_HUD 0.1 ); 
    
ShowSyncHudMsgidgHudSync"Your Points: %d"g_Point[id] ); 
        
    
SavePoint(id);
        }
    }
    return 
PLUGIN_HANDLED;
}

public 
PlayerPoint(id)
{
    new 
say[300]
    
read_args(saycharsmax(say))
        
    
remove_quotes(say)
        
    if(!
is_str_num(say) || equal(say""))
        return 
PLUGIN_HANDLED
        
    PointPlayer
(idsay)
        
    return 
PLUGIN_CONTINUE
}

public 
PointPlayer(idsay[])
{
    new 
value str_to_num(say)
    new 
name gidPlayer[id]
    
    
get_time("%Y%d%m"szTimecharsmax(szTime))
    
    
formatex(szLogcharsmax(szLog), szLogFile_DonateszTime)
    
    if( 
name )
    {
        new 
name1[32], name2[32]
        new 
auth1[32], auth2[32]
        
        
get_user_name(idname1charsmax(name1))
        
get_user_name(namename231)
        
        
get_user_authid(idauth1charsmax(auth1))
        
get_user_authid(nameauth2charsmax(auth2))
        
        if(
g_Point[id] >= 1)
        {
            
g_Point[id] -= value
            g_Point
[name] += value

            
            CC_SendMessage
(id" &x04You Give &x01%s &x05%i &x04Points"name2value)
        
            
CC_SendMessage(name" &x04%s &x05Give You &x04%i &x01Points"name1value)
            
            
log_to_file(szLog"Donate Points: Name: [ %s ] | SteamID: [ %s ] |Donate| Name: [ %s ] SteamID: [ %s ] %i Points"name1auth1name2auth2value)
            
        }
        else {
            
CC_SendMessage(id" &x04You Dont Have Enough Points")
            
client_cmd(id"messagemode _playerpoint")
        }
    }
    
    else
    {
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_HANDLED
}

public 
native_get_user_points(id)
{
    return 
g_Point[id]
}

public 
native_set_user_points(idPointNum)
{
    
g_Point[id] = PointNum
}

public 
adp_fw_items_select_post(iditemid)
{
    
ExecuteForward(g_Forwards[FW_EXTRA_ITEM_SELECTED], g_ForwardResultiditemid)
    if (
g_ForwardResult >= ADP_PLUGIN_HANDLED)
    {
        new 
item_point adp_items_get_point(itemid)
        
        
g_Point[id] += item_point
    
}
}

public 
native_register_extra_item(plugin_idnum_params)
{
    new 
name[32]
    
get_string(1namecharsmax(name))
    new 
point get_param(2)
    
    new 
itemid adp_items_register(namepoint)
    if (
itemid 0) return itemid;
    
    
ArrayPushCell(g_ItemIDitemid)
    return 
itemid;
}

public 
native_items_register(plugin_idnum_params)
{
    new 
name[32], point get_param(2)
    
get_string(1namecharsmax(name))
    
    if (
strlen(name) < 1)
    {
        
log_error(AMX_ERR_NATIVE"[AD-Points] Can't register item with an empty name")
        return 
ADP_INVALID_ITEM;
    }
    
    new 
indexitem_name[32]
    for (
index 0index g_ItemCountindex++)
    {
        
ArrayGetString(g_ItemRealNameindexitem_namecharsmax(item_name))
        if (
equali(nameitem_name))
        {
            
log_error(AMX_ERR_NATIVE"[AD-Points] Item already registered (%s)"name)
            return 
ADP_INVALID_ITEM;
        }
    }
    
    new 
real_name[32]
    
copy(real_namecharsmax(real_name), name)
    
ArrayPushString(g_ItemRealNamereal_name)
    
    if (!
amx_load_setting_string(ITEM_FILEreal_name"NAME"namecharsmax(name)))
        
amx_save_setting_string(ITEM_FILEreal_name"NAME"name)
    
ArrayPushString(g_ItemNamename)
    
    if (!
amx_load_setting_int(ITEM_FILEreal_name"POINTS"point))
        
amx_save_setting_int(ITEM_FILEreal_name"POINTS"point)
    
ArrayPushCell(g_ItemPointpoint)
    
    
g_ItemCount++
    return 
g_ItemCount 1;
}

public 
native_items_get_id(plugin_idnum_params)
{
    new 
real_name[32]
    
get_string(1real_namecharsmax(real_name))
    
    new 
indexitem_name[32]
    for (
index 0index g_ItemCountindex++)
    {
        
ArrayGetString(g_ItemRealNameindexitem_namecharsmax(item_name))
        if (
equali(real_nameitem_name))
            return 
index;
    }
    
    return 
ADP_INVALID_ITEM;
}

public 
native_items_get_name(plugin_idnum_params)
{
    new 
item_id get_param(1)
    
    if (
item_id || item_id >= g_ItemCount)
    {
        
log_error(AMX_ERR_NATIVE"[AD-Points] Invalid item id (%d)"item_id)
        return 
false;
    }
    
    new 
name[32]
    
ArrayGetString(g_ItemNameitem_idnamecharsmax(name))
    
    new 
len get_param(3)
    
set_string(2namelen)
    return 
true;
}

public 
native_items_get_real_name(plugin_idnum_params)
{
    new 
item_id get_param(1)
    
    if (
item_id || item_id >= g_ItemCount)
    {
        
log_error(AMX_ERR_NATIVE"[AD-Points] Invalid item id (%d)"item_id)
        return 
false;
    }
    
    new 
real_name[32]
    
ArrayGetString(g_ItemRealNameitem_idreal_namecharsmax(real_name))
    
    new 
len get_param(3)
    
set_string(2real_namelen)
    return 
true;
}

public 
native_items_get_point(plugin_idnum_params)
{
    new 
item_id get_param(1)
    
    if (
item_id || item_id >= g_ItemCount)
    {
        
log_error(AMX_ERR_NATIVE"[AD-Points] Invalid item id (%d)"item_id)
        return -
1;
    }
    
    return 
ArrayGetCell(g_ItemPointitem_id);
}

public 
native_items_show_menu(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[AD-Points] Invalid Player (%d)"id)
        return 
false;
    }
    
    
Shop_Item(id)
    return 
true;
}

public 
native_items_force_buy(plugin_idnum_params)
{
    new 
id get_param(1)
    
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"[AD-Points] Invalid Player (%d)"id)
        return 
false;
    }
    
    new 
item_id get_param(2)
    
    if (
item_id || item_id >= g_ItemCount)
    {
        
log_error(AMX_ERR_NATIVE"[AD-Points] Invalid item id (%d)"item_id)
        return 
false;
    }
    
    new 
ignorepoint get_param(3)
    
    
buy_item(iditem_idignorepoint)
    return 
true;
}

public 
native_items_menu_text_add(plugin_idnum_params)
{
    static 
text[32]
    
get_string(1textcharsmax(text))
    
format(g_AdditionalMenuTextcharsmax(g_AdditionalMenuText), "%s%s"g_AdditionalMenuTexttext)
}

#if AMXX_VERSION_NUM < 190
public client_disconnect(id)
#else
public client_disconnected(id)
#endif
{
    
MENU_PAGE_ITEMS 0
}

public 
Shop_Item(id)
{
    if (!
is_user_alive(id))
        return;
    
    
show_items_menu(id)
}

show_items_menu(id)
{
    static 
menu[128], name[32], pointtranskey[64]
    new 
menuidindexitemdata[2]
    
    
menuid menu_create("\rADP \yItem \dMenu""menu_itemss")
    
    for (
index 0index g_ItemCountindex++)
    {
        
g_AdditionalMenuText[0] = 0
        
        ExecuteForward
(g_Forwards[FW_ITEM_SELECT_PRE], g_ForwardResultidindex0)
        
        if (
g_ForwardResult >= ADP_ITEM_DONT_SHOW)
            continue;
        
        
ArrayGetString(g_ItemNameindexnamecharsmax(name))
        
point ArrayGetCell(g_ItemPointindex)
        
        
formatex(transkeycharsmax(transkey), "ITEMNAME %s"name)
        if (
GetLangTransKey(transkey) != TransKey_Badformatex(namecharsmax(name), "%L"idtranskey)
        
        if (
g_ForwardResult >= ADP_ITEM_NOT_AVAILABLE)
            
formatex(menucharsmax(menu), "\d%s %d %s"namepointg_AdditionalMenuText)
        else
            
formatex(menucharsmax(menu), "%s \y%d \w%s"namepointg_AdditionalMenuText)
        
        
itemdata[0] = index
        itemdata
[1] = 0
        menu_additem
(menuidmenuitemdata)
    }
    
    if (
menu_items(menuid) <= 0)
    {
        
CC_SendMessage(id" &x04No Item.")
        
menu_destroy(menuid)
        return;
    }
    
    
formatex(menucharsmax(menu), "\yBack")
    
menu_setprop(menuidMPROP_BACKNAMEmenu)
    
formatex(menucharsmax(menu), "\yNext")
    
menu_setprop(menuidMPROP_NEXTNAMEmenu)
    
formatex(menucharsmax(menu), "\rExit")
    
menu_setprop(menuidMPROP_EXITNAMEmenu)
    
    
MENU_PAGE_ITEMS min(MENU_PAGE_ITEMSmenu_pages(menuid)-1)
    
    
set_pdata_int(idOFFSET_CSMENUCODE0)
    
menu_display(idmenuidMENU_PAGE_ITEMS)
}

public 
menu_itemss(idmenuiditem)
{
    if (
item == MENU_EXIT)
    {
        
MENU_PAGE_ITEMS 0
        menu_destroy
(menuid)
        return 
PLUGIN_HANDLED;
    }
    
    
MENU_PAGE_ITEMS item 7
    
    
if (!is_user_alive(id))
    {
        
menu_destroy(menuid)
        return 
PLUGIN_HANDLED;
    }
    
    new 
itemdata[2], dummyitemid
    menu_item_getinfo
(menuiditemdummyitemdatacharsmax(itemdata), __dummy)
    
itemid itemdata[0]
    
    
buy_item(iditemid)
    
menu_destroy(menuid)
    return 
PLUGIN_HANDLED;
}

buy_item(iditemidignorepoint 0)
{
    
ExecuteForward(g_Forwards[FW_ITEM_SELECT_PRE], g_ForwardResultiditemidignorepoint)
    
    if (
g_ForwardResult >= ADP_ITEM_NOT_AVAILABLE)
        return;
    
    
ExecuteForward(g_Forwards[FW_ITEM_SELECT_POST], g_ForwardResultiditemidignorepoint)

LOFIm is offline