Raised This Month: $ Target: $400
 0% 

Enable/Disable Dance Menu


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Cuttlas
Senior Member
Join Date: Jan 2015
Old 11-14-2023 , 15:16   Enable/Disable Dance Menu
Reply With Quote #1

here is a dance plugin, when this plugin is active (va plugins.ini), every player can pop up a dance menu and use it.

but there is not any admin command to enable/disable dance menu, can anyone help me please adding such options to the source?
Attached Files
File Type: sma Get Plugin or Get Source (dansmenusu.sma - 32 views - 6.5 KB)
Cuttlas is offline
McTavish
Senior Member
Join Date: May 2021
Old 11-15-2023 , 17:58   Re: Enable/Disable Dance Menu
Reply With Quote #2

Quote:
Originally Posted by Cuttlas View Post
here is a dance plugin, when this plugin is active (va plugins.ini), every player can pop up a dance menu and use it.

but there is not any admin command to enable/disable dance menu, can anyone help me please adding such options to the source?
I'm really bad at coding but try this :
Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <xs>

#define PLUGIN "DANS Menusu"
#define VERSION "0.1.2"  // Updated version
#define AUTHOR "ANONIM // Edit: CSmiLeFaCe"

#define ANIM_MODEL "models/CSPlugin_Hareketler.mdl"

enum _:PLAYER_DATA
{
   ENT_CAM,
   ENT_MODEL,
   ENT_ANIM,
   ANIM_PLAYING
}

enum _:SEQ_DESC
{
   MODEL[64],
   SEQ_LABEL[33],
   SEQ_FPS,
   SEQ_FRAMES,
   SEQ_FRAMERATE
}

new g_allocString

new g_playerData[33][PLAYER_DATA]

new Array:g_animData

new g_animMenu

new g_cvarAccessFlag
new g_danceMenuEnabled // Added flag to track dance menu status

public plugin_init() 
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
   
   register_clcmd("say_team /dans", "cmdAnim")

   register_clcmd("amx_dancemenu_enable", "cmdEnableDanceMenu")
   register_clcmd("amx_dancemenu_disable", "cmdDisableDanceMenu")

   register_forward(FM_CmdStart, "fwdCmdStart", 1)
   
   RegisterHam(Ham_Killed, "player", "fwdPlayerKilled", 1)

   g_allocString = engfunc(EngFunc_AllocString, "info_target")
   
   g_animData = ArrayCreate(SEQ_DESC)
   
   g_animMenu = menu_create("Dance Menu", "animMenuHandler")
   
   g_cvarAccessFlag = register_cvar("anim_menu_access_flag", "")
   g_danceMenuEnabled = 1 // Dance menu enabled by default
   
   loadModel(ANIM_MODEL)
}

// ... (rest of the functions remain unchanged)

public cmdEnableDanceMenu(id)
{
   if (is_user_admin(id))
   {
      g_danceMenuEnabled = 1
      client_print(id, print_chat, "Dance menu enabled.")
   }
   else
   {
      client_print(id, print_chat, "You do not have permission to enable the dance menu.")
   }
}

public cmdDisableDanceMenu(id)
{
   if (is_user_admin(id))
   {
      g_danceMenuEnabled = 0
      client_print(id, print_chat, "Dance menu disabled.")
   }
   else
   {
      client_print(id, print_chat, "You do not have permission to disable the dance menu.")
   }
}

// ... (rest of the functions remain unchanged)
amx_dancemenu_enable : Enables the dance menu.
amx_dancemenu_disable : Disables the dance menu.
__________________
No Steam = No Support.
McTavish is offline
Cuttlas
Senior Member
Join Date: Jan 2015
Old 11-16-2023 , 05:53   Re: Enable/Disable Dance Menu
Reply With Quote #3

thank you bro, nice job
Cuttlas is offline
McTavish
Senior Member
Join Date: May 2021
Old 11-16-2023 , 11:48   Re: Enable/Disable Dance Menu
Reply With Quote #4

Quote:
Originally Posted by Cuttlas View Post
thank you bro, nice job
worked? xD
__________________
No Steam = No Support.
McTavish is offline
Cuttlas
Senior Member
Join Date: Jan 2015
Old 11-16-2023 , 15:42   Re: Enable/Disable Dance Menu
Reply With Quote #5

no just compiled it now,

here is the errors:

dancemenu.sma(283) : error 017: undefined symbol "is_user_admin"
dancemenu.sma(296) : error 017: undefined symbol "is_user_admin"

you can use https://amx.icegame.ro/amxx/webcompiler.php to compile online

here is the dance model if needed:
Attached Files
File Type: zip CSPlugin_Hareketler.zip (34.2 KB, 5 views)

Last edited by Cuttlas; 11-16-2023 at 15:44.
Cuttlas is offline
McTavish
Senior Member
Join Date: May 2021
Old 11-19-2023 , 15:24   Re: Enable/Disable Dance Menu
Reply With Quote #6

Quote:
Originally Posted by Cuttlas View Post
no just compiled it now,

here is the errors:

dancemenu.sma(283) : error 017: undefined symbol "is_user_admin"
dancemenu.sma(296) : error 017: undefined symbol "is_user_admin"

you can use https://amx.icegame.ro/amxx/webcompiler.php to compile online

here is the dance model if needed:
sorry for late, try this:
amx_cvar dance_enable 1
amx_cvar dance_enable 0
note : use the last version of amxmodx
Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <xs>

#define PLUGIN "DANS Menusu"
#define VERSION "0.1.1"
#define AUTHOR "ANONIM // Edit: CSmiLeFaCe"

#define ANIM_MODEL "models/CSPlugin_Hareketler.mdl"

enum _:PLAYER_DATA
{
    ENT_CAM,
    ENT_MODEL,
    ENT_ANIM,
    ANIM_PLAYING
}

enum _:SEQ_DESC
{
    MODEL[64],
    SEQ_LABEL[33],
    SEQ_FPS,
    SEQ_FRAMES,
    SEQ_FRAMERATE
}

new g_allocString

new g_playerData[33][PLAYER_DATA]

new Array:g_animData

new g_animMenu

new g_cvarAccessFlag
new bool: g_danceEnabled // Add new global: dance_enable cvar

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)

    register_clcmd("say_team /dans", "cmdAnim")

    register_forward(FM_CmdStart, "fwdCmdStart", 1)

    RegisterHam(Ham_Killed, "player", "fwdPlayerKilled", 1)

    g_allocString = engfunc(EngFunc_AllocString, "info_target")

    g_animData = ArrayCreate(SEQ_DESC)

    g_animMenu = menu_create("Dance Menu", "animMenuHandler")

    g_cvarAccessFlag = register_cvar("anim_menu_access_flag", "")

    g_danceEnabled = register_cvar("dance_enable", "1", FCVAR_PROTECTED) // Register new cvar at server initialization

    loadModel(ANIM_MODEL)
}

public plugin_precache()
{
    precache_model(ANIM_MODEL)
}

public plugin_end()
{
    ArrayDestroy(g_animData)
}

public loadModel(model[])
{
    new file = fopen(model, "rt")
    new numseq, seqindex, i, Float:framerate

    new seqDesc[SEQ_DESC]

    fseek(file, 164, SEEK_SET)
    fread(file, numseq, BLOCK_INT)
    fread(file, seqindex, BLOCK_INT)

    for(i = 0; i < numseq; i++)
    {
        fseek(file, seqindex + 176*i, SEEK_SET)
        fread_blocks(file, seqDesc[SEQ_LABEL], 32, BLOCK_CHAR)

        fread(file, seqDesc[SEQ_FPS], BLOCK_INT)

        fseek(file, 20, SEEK_CUR)
        fread(file, seqDesc[SEQ_FRAMES], BLOCK_INT)

        framerate = 256.0 * Float:seqDesc[SEQ_FPS] / (seqDesc[SEQ_FRAMES] - 1)

        seqDesc[SEQ_FRAMERATE] = _:framerate

        ArrayPushArray(g_animData, seqDesc)

        menu_additem(g_animMenu, seqDesc[SEQ_LABEL], "")
    }

    fclose(file)
}

public client_putinserver(id)
{
    if (!g_playerData[id][ENT_MODEL])
        createPlayerEnt(id)
}

public client_disconnect(id)
{
    stopAnim(id)
}

public createPlayerEnt(id)
{
    new ent = engfunc(EngFunc_CreateNamedEntity, g_allocString)
    set_pev(ent, pev_rendermode, kRenderTransAdd)
    set_pev(ent, pev_renderamt, 0.0)
    set_pev(ent, pev_owner, id)
    engfunc(EngFunc_SetModel, ent, ANIM_MODEL)

    g_playerData[id][ENT_CAM] = ent

    ent= engfunc(EngFunc_CreateNamedEntity, g_allocString)
    engfunc(EngFunc_SetModel, ent, ANIM_MODEL)
    set_pev(ent, pev_movetype, MOVETYPE_FLY)
    set_pev(ent, pev_controller_1, 63.75)

    g_playerData[id][ENT_ANIM] = ent

    ent= engfunc(EngFunc_CreateNamedEntity, g_allocString)
    set_pev(ent, pev_movetype, MOVETYPE_FOLLOW)
    set_pev(ent, pev_aiment, g_playerData[id][ENT_ANIM])
    set_pev(ent, pev_effects, EF_NODRAW)

    g_playerData[id][ENT_MODEL] = ent
}

public cmdAnim(id)
{
    if (!get_cvar_num("dance_enable")) // Check if dance_enable is true
    {
        client_print(id, print_chat, "Dance feature is currently disabled by the admin.")
        return
    }
    if (is_user_alive(id))
    {
        new access[32], flag
        get_pcvar_string(g_cvarAccessFlag, access, 31)
        flag = read_flags(access)

        if (!flag || (get_user_flags(id)&flag))
            menu_display(id, g_animMenu)
    }
}

public startAnim(id, anim)
{
    new seqDesc[SEQ_DESC]
    ArrayGetArray(g_animData, anim, seqDesc)

    new ent = g_playerData[id][ENT_ANIM]
    new modelEnt = g_playerData[id][ENT_MODEL]
    //   set_pev(ent, pev_framerate, seqDesc[SEQ_FRAMERATE])
    set_pev(ent, pev_framerate, 1.0)
    //   set_pev(ent, pev_animtime, (seqDesc[SEQ_FRAMES] - 1)/seqDesc[SEQ_FPS])
    set_pev(ent, pev_sequence, anim)
    set_pev(ent, pev_gaitsequence, anim)

    new Float:origin[3], Float:mins[3]
    pev(id, pev_origin, origin)
    pev(id, pev_mins, mins)

    mins[0] = origin[0]
    mins[1] = origin[1]
    mins[2] += origin[2]
    set_pev(ent, pev_origin, mins)

    set_pev(modelEnt, pev_effects, 0)
    new model[64]
    get_user_info(id, "model", model, 63)
    format(model, 63, "models/player/%s/%s.mdl", model, model)
    engfunc(EngFunc_SetModel, modelEnt, model)

    set_pev(modelEnt, pev_body, pev(id, pev_body))
    set_pev(modelEnt, pev_skin, pev(id, pev_skin))

    set_pev(ent, pev_controller_0, 128)
    set_pev(ent, pev_controller_1, 128)

    pev(id, pev_angles, mins)
    mins[0] = 0.0
    set_pev(ent, pev_angles, mins)
    set_pev(ent, pev_v_angle, mins)

    engfunc(EngFunc_SetView, id, g_playerData[id][ENT_CAM])
    g_playerData[id][ANIM_PLAYING] = 1

    set_pev(id, pev_effects, EF_NODRAW)

}

public stopAnim(id)
{
    set_pev(g_playerData[id][ENT_MODEL], pev_effects, EF_NODRAW)
    g_playerData[id][ANIM_PLAYING] = 0
    set_pev(id, pev_effects, 0)

    engfunc(EngFunc_SetView, id, id)
}

public animMenuHandler(id, menu, item)
{
    if(item == MENU_EXIT)
        return PLUGIN_HANDLED

    new access[32], flag
    get_pcvar_string(g_cvarAccessFlag, access, 31)
    flag = read_flags(access)

    if (flag && !(get_user_flags(id)&flag))
    {
        client_print(id, print_chat, "www.csplugin.com")
        return PLUGIN_HANDLED
    }

    if (!(pev(id, pev_flags)&FL_ONGROUND))
    {
        client_print(id, print_chat, "Yerinde dur!")
        return PLUGIN_HANDLED
    }

    startAnim(id, item)

    menu_display(id, g_animMenu, floatround(item/7.0, floatround_floor))

    return PLUGIN_HANDLED
}

public fwdCmdStart(id, uc, randseed)
{
    if (is_user_alive(id) && g_playerData[id][ANIM_PLAYING])
    {
        if (!get_uc(uc, UC_Buttons))
        {
            static Float:fOrigin[3], Float:fAngle[3], Float:origin[3]
            pev( id, pev_origin, origin )
            pev(id, pev_view_ofs, fOrigin)
            xs_vec_add(origin, fOrigin, origin)
            xs_vec_copy(origin, fOrigin)
            pev(id, pev_v_angle, fAngle)

            static Float:fVBack[3]
            angle_vector(fAngle, ANGLEVECTOR_FORWARD, fVBack)

            fOrigin[2] += 20.0

            fOrigin[0] += (-fVBack[0] * 150.0)
            fOrigin[1] += (-fVBack[1] * 150.0)
            fOrigin[2] += (-fVBack[2] * 150.0)

            static tr
            tr = 0
            engfunc(EngFunc_TraceLine, origin, fOrigin, IGNORE_MONSTERS, id, tr)
            get_tr2(tr, TR_vecEndPos, fOrigin)
            free_tr2(tr)

            engfunc(EngFunc_SetOrigin, g_playerData[id][ENT_CAM], fOrigin)
            set_pev(g_playerData[id][ENT_CAM], pev_angles, fAngle)
        }
        else
            stopAnim(id)
    }
}

public fwdPlayerKilled(id)
{
    stopAnim(id)
}
__________________
No Steam = No Support.

Last edited by McTavish; 11-19-2023 at 15:26.
McTavish is offline
Reply


Thread Tools
Display Modes

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 07:06.


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