This site is a testing version, but all data is shared with the live forum.


Raised This Month: $ Target: $400
 0% 

nVault save + load


Post New Thread Reply   
 
Thread Tools Display Modes
wildbiker
Junior Member
Join Date: Jul 2023
Location: Hungary
Old 04-11-2024 , 14:51   Re: nVault save + load
Reply With Quote #11

Quote:
Originally Posted by bigdaddy424 View Post
PHP Code:
#include <amxmodx>
#include <chatmanager>
#include <nvault>

#define PLUGIN_VERSION "4.1"

#define SetBit(%1,%2)      (%1 |= (1<<%2))
#define ClearBit(%1,%2)    (%1 &= ~(1<<%2))
#define CheckBit(%1,%2)    (%1 & (1<<%2)) 

new vaultvalue[MAX_PLAYERS 1]
enum
{
    
CM_MENU_ITEM_PREFIX,
    
CM_MENU_ITEM_CHAT_COLOR,
    
CM_MENU_ITEM_CUSTOM_NAME
}

public 
plugin_init()
{
    
register_plugin("CM: Toggle Chat"PLUGIN_VERSION"OciXCrom")
    
register_cvar("CRXCMToggleChat"PLUGIN_VERSIONFCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
    
register_dictionary("ChatManager.txt")
    
register_clcmd("say /cm""Menu_Display")
    
register_clcmd("say_team /cm""Menu_Display")
    
vault nvault_open("chatmanager")
}

public 
plugin_end()
{
    
nvault_close(vault);
}

public 
Menu_Display(id)
{
    new 
szText[128], szItem[128]
    
formatex(szTextcharsmax(szText), "%L"id"CM_MENU_TITLE")
    
    new 
iMenu menu_create(szText"Menu_Handler")

    
cm_get_user_prefix(idszTextcharsmax(szText))
    
check_validity(szTextcharsmax(szText))
    
formatex(szItemcharsmax(szItem), "%L %L%s"id"CM_MENU_PREFIX"idcm_get_user_prefix_status(id) ? "CM_MENU_ENABLED" "CM_MENU_DISABLED"szText)
    
menu_additem(iMenuszItem)
    
    
cm_get_user_chat_color(idszTextcharsmax(szText))
    
check_validity(szTextcharsmax(szText))
    
formatex(szItemcharsmax(szItem), "%L %L%s"id"CM_MENU_CHAT_COLOR"idcm_get_user_chat_color_status(id) ? "CM_MENU_ENABLED" "CM_MENU_DISABLED"szText)
    
menu_additem(iMenuszItem)
    
    
cm_get_user_custom_name(idszTextcharsmax(szText))
    
check_validity(szTextcharsmax(szText))
    
formatex(szItemcharsmax(szItem), "%L %L%s"id"CM_MENU_CUSTOM_NAME"idcm_get_user_custom_name_status(id) ? "CM_MENU_ENABLED" "CM_MENU_DISABLED"szText)
    
menu_additem(iMenuszItem)
    
    
menu_display(idiMenu)
    return 
PLUGIN_HANDLED
}

public 
Menu_Handler(idiMenuiItem)
{
    switch(
iItem)
    {
        case 
MENU_EXIT:
        {
            
menu_destroy(iMenu)
            return 
PLUGIN_HANDLED
        
}
        case 
CM_MENU_ITEM_PREFIX
        {
            
cm_set_user_prefix_status(id, !cm_get_user_prefix_status(id))
            
cm_get_user_prefix_status(id) ? SetBit(value[id], CM_MENU_ITEM_PREFIX) : ClearBit(value[id], CM_MENU_ITEM_PREFIX)
        }
        case 
CM_MENU_ITEM_CHAT_COLOR
        {
            
cm_set_user_chat_color_status(id, !cm_get_user_chat_color_status(id))
            
cm_get_user_chat_color_status(id) ? SetBit(value[id], CM_MENU_ITEM_CHAT_COLOR) : ClearBit(value[id], CM_MENU_ITEM_CHAT_COLOR)
        }
        case 
CM_MENU_ITEM_CUSTOM_NAME
        {
            
cm_set_user_custom_name_status(id, !cm_get_user_custom_name_status(id))
            
cm_get_user_custom_name_status(id) ? SetBit(value[id], CM_MENU_ITEM_CUSTOM_NAME) : ClearBit(value[id], CM_MENU_ITEM_CUSTOM_NAME)
        }
    }
    
    
menu_destroy(iMenu)
    
Menu_Display(id)
    return 
PLUGIN_HANDLED
}

check_validity(szText[], const iLen)
{
    if(
szText[0])
        
format(szTextiLen"\d: %s"szText)
}

public 
client_authorized(id, const authid[])
{
    
value[id] = nvault_get(vaultauthid)
    
cm_set_user_prefix_status(idbool:CheckBit(value[id], CM_MENU_ITEM_PREFIX))
    
cm_set_user_chat_color_status(idbool:CheckBit(value[id], CM_MENU_ITEM_CHAT_COLOR))
    
cm_set_user_custom_name_status(idbool:CheckBit(value[id], CM_MENU_ITEM_CUSTOM_NAME))
}

public 
client_disconnected(id)
{
    new 
authid[32]
    
get_user_authid(idauthid31)
    
nvault_set(vaultauthidfmt("%d"value[id]))

Hi!

Thank you very much, I roughly understand this solution, but unfortunately it doesn't work.

By default, all three options are enabled. I disable it and after changing the map or reconnecting it is still enabled.
__________________
wildbiker is offline
wildbiker
Junior Member
Join Date: Jul 2023
Location: Hungary
Old 04-12-2024 , 09:49   Re: nVault save + load
Reply With Quote #12

@bigdaddy424

It looks like it works. It wasn't good yesterday, it didn't work in the morning either, but from this afternoon it will save the selection. I will test it on 2 servers in the next few days, thanks again! ;)
__________________
wildbiker is offline
bigdaddy424
Senior Member
Join Date: Oct 2021
Location: Jupiter
Old 04-12-2024 , 21:12   Re: nVault save + load
Reply With Quote #13

bits can hold up to 32 different true:false options in case you want to expand
PHP Code:
#include <amxmodx>
#include <nvault>

#define SetBit(%1,%2)      (%1 |= (1<<%2))
#define ClearBit(%1,%2)    (%1 &= ~(1<<%2))
#define CheckBit(%1,%2)    (%1 & (1<<%2))  

new vault

new value[MAX_PLAYERS 1]

public 
plugin_init()
{
    
register_clcmd("say f""clcmd_f")
    
vault nvault_open("test")
}

public 
plugin_end()
    
nvault_close(vault)

public 
client_authorized(id, const authid[])
    
value[id] = nvault_get(vaultauthid)

public 
client_disconnected(id)
{
    new 
authid[32]
    
get_user_authid(idauthid31)
    
nvault_set(vaultauthidfmt("%d"value[id]))
}  

public 
clcmd_f(id)
    
open_menu(id)

public 
menu_handler(idmenui)
{
    
menu_destroy(menu)

    static 
newmenumenupage
    player_menu_info
(idmenunewmenumenupage)

    if (
!= MENU_EXIT)
    {
        
CheckBit(value[id], i) ? ClearBit(value[id], i) : SetBit(value[id], i)
        
open_menu(idmenupage)
    }
}

open_menu(idpage 0)
{
    new 
menu menu_create("menu""menu_handler")
    for (new 
031i++)
        
menu_additem(menufmt("Option %d %s"1CheckBit(value[id], i) ? "enabled" "\ddisabled"))
    
menu_display(idmenupage)

__________________
bigdaddy424 is offline
wildbiker
Junior Member
Join Date: Jul 2023
Location: Hungary
Old 04-15-2024 , 11:53   Re: nVault save + load
Reply With Quote #14

@bigdaddy424

I finally succeeded in testing it on several machines, it works.

I have never worked with this solution before, but I will definitely use it again!

Thanks!

Please somebody mark as Solved this topic.

Quote:
Originally Posted by bigdaddy424 View Post
bits can hold up to 32 different true:false options in case you want to expand
PHP Code:
#include <amxmodx>
#include <nvault>

#define SetBit(%1,%2)      (%1 |= (1<<%2))
#define ClearBit(%1,%2)    (%1 &= ~(1<<%2))
#define CheckBit(%1,%2)    (%1 & (1<<%2))  

new vault

new value[MAX_PLAYERS 1]

public 
plugin_init()
{
    
register_clcmd("say f""clcmd_f")
    
vault nvault_open("test")
}

public 
plugin_end()
    
nvault_close(vault)

public 
client_authorized(id, const authid[])
    
value[id] = nvault_get(vaultauthid)

public 
client_disconnected(id)
{
    new 
authid[32]
    
get_user_authid(idauthid31)
    
nvault_set(vaultauthidfmt("%d"value[id]))
}  

public 
clcmd_f(id)
    
open_menu(id)

public 
menu_handler(idmenui)
{
    
menu_destroy(menu)

    static 
newmenumenupage
    player_menu_info
(idmenunewmenumenupage)

    if (
!= MENU_EXIT)
    {
        
CheckBit(value[id], i) ? ClearBit(value[id], i) : SetBit(value[id], i)
        
open_menu(idmenupage)
    }
}

open_menu(idpage 0)
{
    new 
menu menu_create("menu""menu_handler")
    for (new 
031i++)
        
menu_additem(menufmt("Option %d %s"1CheckBit(value[id], i) ? "enabled" "\ddisabled"))
    
menu_display(idmenupage)

__________________
wildbiker 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 13:57.


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