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


Raised This Month: $ Target: $400
 0% 

Enable/Disable Dance Menu


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
McTavish
Senior Member
Join Date: May 2021
Old 11-19-2023 , 14:24   Re: Enable/Disable Dance Menu
Reply With Quote #1

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 14:26.
McTavish 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 12:56.


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