Voices Managemenet - warning 233: symbol "client_disconnect"

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
272
Реакции
14
Hi.

I changed the message texts in this plugin from "col_mess" to "client_print_color" and compiled in 1.9.0 and an error occurred. Can anyone help?

Код:
// Required admin access level
#define ADMIN_VOICE    ADMIN_BAN

// Comment this out if you don't want that a "no sound" player can hear admins using +adminvoice
// All other player settings are respected whatever this is commented or not.
#define SUPER_ADMIN_PRIORITY

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define VERSION "1.0.2"

#define MAX_PLAYERS    32

#define OFFSET_TEAM        114

new g_iClientSettings[MAX_PLAYERS+1][2]
new bool:g_bPlayerNonSpawnEvent[MAX_PLAYERS+1]
new g_iFwFmClientCommandPost
new bool:g_bAlive[MAX_PLAYERS+1]

new g_iAdminVoice
new bool:g_bAdmin[MAX_PLAYERS+1]
new bool:g_bInterAdminVoice[MAX_PLAYERS+1]
new bool:g_bAdminListen[MAX_PLAYERS+1]

new bool:g_bMuted[MAX_PLAYERS+1]
new g_szClientsIp[MAX_PLAYERS+1][22]
new Array:g_aMutedPlayersIps

new g_iMaxPlayers
new g_pcvarAlivesHear, g_pcvarDeadsHear

public plugin_init()
{
    register_plugin("Voices Management", VERSION, "ConnorMcLeod")
    register_dictionary("voicesmanagement.txt")
    register_dictionary("common.txt")

    g_pcvarAlivesHear = register_cvar("vm_alives", "0")  // 0:alive teamates , 1:alives , 2:all
    g_pcvarDeadsHear = register_cvar("vm_deads", "1")    // 0:dead teamates , 1:deads , 2:all

    register_forward(FM_Voice_SetClientListening, "Forward_SetClientListening")
    register_event("VoiceMask", "Event_VoiceMask", "b")

    register_event("TextMsg", "Event_TextMsg_Restart", "a", "2=#Game_will_restart_in")
    register_event("ResetHUD", "Event_ResetHUD", "b")
    register_event("DeathMsg", "Event_DeathMsg", "a")

    register_clcmd("+adminvoice", "AdminCommand_VoiceOn")
    register_clcmd("-adminvoice", "AdminCommand_VoiceOff")

    register_clcmd("+interadminvoice", "AdminCommand_InterAdminOn")
    register_clcmd("-interadminvoice", "AdminCommand_InterAdminOff")

    register_clcmd("+adminlisten", "AdminCommand_ListenOn")
    register_clcmd("-adminlisten", "AdminCommand_ListenOff")
    register_clcmd("toggle_adminlisten", "AdminCommand_ListenToggle")

    register_clcmd("say /vm", "ClientCommand_SayStatus")
    register_clcmd("say_team /vm", "ClientCommand_SayStatus")

    register_clcmd("fullupdate", "ClientCommand_fullupdate")
}

public plugin_cfg()
{
    server_cmd("sv_alltalk 1;alias sv_alltalk")
    server_exec()
    g_iMaxPlayers = get_maxplayers()
    g_aMutedPlayersIps = ArrayCreate(22)
}

public ClientCommand_SayStatus(id)
{
    new iDeads = get_pcvar_num(g_pcvarDeadsHear), 
        iAlives = get_pcvar_num(g_pcvarAlivesHear)

    new szDeadsStatus[18], szAlivesStatus[19]

    switch( iAlives )
    {
        case 0:szAlivesStatus = "VM_ALIVES_TEAMATES"
        case 1:szAlivesStatus = "VM_ALIVES"
        case 2:szAlivesStatus = "VM_ALL"
    }

    switch( iDeads )
    {
        case 0:szDeadsStatus = "VM_DEADS_TEAMATES"
        case 1:szDeadsStatus = "VM_DEADS"
        case 2:szDeadsStatus = "VM_ALL"
    }

    client_print_color(id, id, "%L", id, "VM_ALIVES_STATUS", id, szAlivesStatus)
    client_print_color(id, id, "%L", id, "VM_DEADS_STATUS", id, szDeadsStatus)
}

public ClientCommand_fullupdate(id)
{
    g_bPlayerNonSpawnEvent[id] = true
    static const szFwFmClientCommandPost[] = "fwFmClientCommandPost"
    g_iFwFmClientCommandPost = register_forward(FM_ClientCommand, szFwFmClientCommandPost, 1)
    return PLUGIN_CONTINUE
}

public fwFmClientCommandPost(iPlayerId) {
    unregister_forward(FM_ClientCommand, g_iFwFmClientCommandPost, 1)
    g_bPlayerNonSpawnEvent[iPlayerId] = false
    return FMRES_HANDLED
}

public Event_TextMsg_Restart()
{
    for(new id=1; id <= g_iMaxPlayers; ++id)
    {
        if(g_bAlive[id])
        {
            g_bPlayerNonSpawnEvent[id] = true
        }
    }
}

public Event_ResetHUD(id)
{
    if( !is_user_alive(id) )
    {
        return
    }

    if(g_bPlayerNonSpawnEvent[id])
    {
        g_bPlayerNonSpawnEvent[id] = false
        return
    }
    g_bAlive[id] = true
}

public client_authorized(id)
{
    g_bAdmin[id] = bool:(get_user_flags(id) & ADMIN_VOICE)
}

public client_putinserver(id)
{
    g_bAlive[id] = false
    g_bAdminListen[id] = false
    g_bInterAdminVoice[id] = false

    if(is_user_bot(id) || is_user_hltv(id))
        return

    static szIp[22]
    get_user_ip(id, szIp, 21)
    g_szClientsIp[id] = szIp

    static szTempIp[22], iArraySize
    iArraySize = ArraySize(g_aMutedPlayersIps)
    for(new i; i<iArraySize; i++)
    {
        ArrayGetString(g_aMutedPlayersIps, i, szTempIp, 21)
        if( equal(szIp, szTempIp) )
        {
            ArrayDeleteItem(g_aMutedPlayersIps, i)
            g_bMuted[id] = true
            break
        }
    }
}

public client_disconnect(id)
{
    if(g_iAdminVoice == id)
    {
        g_iAdminVoice = 0
    }
    if(g_bMuted[id])
    {
        ArrayPushString(g_aMutedPlayersIps, g_szClientsIp[id])
        g_bMuted[id] = false
    }
}

public Event_DeathMsg()
{
    g_bAlive[read_data(2)] = false
}

public Event_VoiceMask(id)
{
    g_iClientSettings[id][0] = read_data(1)
    g_iClientSettings[id][1] = read_data(2)
}

public Forward_SetClientListening(iReceiver, iSender, bool:bListen)
{
#if defined SUPER_ADMIN_PRIORITY
    if(g_iAdminVoice)
    {
        if(g_iAdminVoice == iSender)
        {
            engfunc(EngFunc_SetClientListening, iReceiver, iSender, true)
            forward_return(FMV_CELL, true)
            return FMRES_SUPERCEDE
        }
        engfunc(EngFunc_SetClientListening, iReceiver, iSender, false)
        forward_return(FMV_CELL, false)
        return FMRES_SUPERCEDE
    }

    if( !g_iClientSettings[iReceiver][0] || g_iClientSettings[iReceiver][1] & (1<<(iSender-1)) )
    {
        return FMRES_IGNORED
    }
#else
    if( !g_iClientSettings[iReceiver][0] || g_iClientSettings[iReceiver][1] & (1<<(iSender-1)) )
    {
        return FMRES_IGNORED
    }

    if(g_iAdminVoice)
    {
        if(g_iAdminVoice == iSender)
        {
            engfunc(EngFunc_SetClientListening, iReceiver, iSender, true)
            forward_return(FMV_CELL, true)
            return FMRES_SUPERCEDE
        }
        engfunc(EngFunc_SetClientListening, iReceiver, iSender, false)
        forward_return(FMV_CELL, false)
        return FMRES_SUPERCEDE
    }
#endif
    if(g_bMuted[iSender])
    {
        engfunc(EngFunc_SetClientListening, iReceiver, iSender, false)
        forward_return(FMV_CELL, false)
        return FMRES_SUPERCEDE
    }

    if(g_bInterAdminVoice[iSender])
    {
        if(g_bAdmin[iReceiver]) 
        {
            engfunc(EngFunc_SetClientListening, iReceiver, iSender, true)
            forward_return(FMV_CELL, true)
            return FMRES_SUPERCEDE
        }
        engfunc(EngFunc_SetClientListening, iReceiver, iSender, false)
        forward_return(FMV_CELL, false)
        return FMRES_SUPERCEDE
    }

    if(g_bAdminListen[iReceiver])
    {
        engfunc(EngFunc_SetClientListening, iReceiver, iSender, true)
        forward_return(FMV_CELL, true)
        return FMRES_SUPERCEDE
    }

    if(g_bAlive[iReceiver])
    {
        switch(get_pcvar_num(g_pcvarAlivesHear))
        {
            case 0:
            {
                if( g_bAlive[iSender] && get_pdata_int(iReceiver, OFFSET_TEAM) == get_pdata_int(iSender, OFFSET_TEAM) )
                {
                    engfunc(EngFunc_SetClientListening, iReceiver, iSender, true)
                    forward_return(FMV_CELL, true)
                    return FMRES_SUPERCEDE
                }
            }
            case 1:
            {
                if( g_bAlive[iSender] )
                {
                    engfunc(EngFunc_SetClientListening, iReceiver, iSender, true)
                    forward_return(FMV_CELL, true)
                    return FMRES_SUPERCEDE
                }
            }
            case 2:
            {
                engfunc(EngFunc_SetClientListening, iReceiver, iSender, true)
                forward_return(FMV_CELL, true)
                return FMRES_SUPERCEDE
            }
        }
    }
    else
    {
        switch(get_pcvar_num(g_pcvarDeadsHear))
        {
            case 0:
            {
                if( !g_bAlive[iSender] && get_pdata_int(iReceiver, OFFSET_TEAM) == get_pdata_int(iSender, OFFSET_TEAM) )
                {
                    engfunc(EngFunc_SetClientListening, iReceiver, iSender, true)
                    forward_return(FMV_CELL, true)
                    return FMRES_SUPERCEDE
                }
            }
            case 1:
            {
                if( !g_bAlive[iSender] )
                {
                    engfunc(EngFunc_SetClientListening, iReceiver, iSender, true)
                    forward_return(FMV_CELL, true)
                    return FMRES_SUPERCEDE
                }
            }
            case 2:
            {
                engfunc(EngFunc_SetClientListening, iReceiver, iSender, true)
                forward_return(FMV_CELL, true)
                return FMRES_SUPERCEDE
            }
        }
    }

    engfunc(EngFunc_SetClientListening, iReceiver, iSender, false)
    forward_return(FMV_CELL, false)
    return FMRES_SUPERCEDE
}

public AdminCommand_ListenOn(id)
{
    if( !g_bAdmin[id] )
        return PLUGIN_HANDLED

    g_bAdminListen[id] = true

    return PLUGIN_HANDLED
}

public AdminCommand_ListenOff(id)
{
    if( g_bAdminListen[id] )
    {
        g_bAdminListen[id] = false
    }

    return PLUGIN_HANDLED
}

public AdminCommand_ListenToggle(id)
{
    if( !g_bAdmin[id] )
    {
        return PLUGIN_HANDLED
    }

    g_bAdminListen[id] = !g_bAdminListen[id]

    client_print_color(id, id, "%L", id, "VM_LISTEN_STATUS", g_bAdminListen[id] ? "ON" : "OFF")

    return PLUGIN_HANDLED
}

public AdminCommand_VoiceOn(id)
{
    if(!g_bAdmin[id])
    {
        return PLUGIN_HANDLED
    }

    if(g_iAdminVoice)
    {
        client_print_color(id, id, "%L", id, "VM_ALREADY_INUSE")
        return PLUGIN_HANDLED
    }

    g_iAdminVoice = id

    new name[32]
    pev(id, pev_netname, name, 31)

    for(new player = 1; player <= g_iMaxPlayers; player++)
    {
        if( is_user_connected(player) && !is_user_hltv(player) && !is_user_bot(player) )
        {
            client_print_color(player, id, "%L", player, "VM_ADMIN_TALK", name)
        }
    }

    client_cmd(id, "+voicerecord")

    return PLUGIN_HANDLED
}

public AdminCommand_VoiceOff(id)
{
    if( !g_bAdmin[id] )
    {
        return PLUGIN_HANDLED
    }

    if(g_iAdminVoice != id)
    {
        client_cmd(id, "-voicerecord")
        return PLUGIN_HANDLED
    }

    client_cmd(id, "-voicerecord")
    g_iAdminVoice = 0
    return PLUGIN_HANDLED
}

public AdminCommand_InterAdminOn(id)
{
    if( !g_bAdmin[id] )
    {
        return PLUGIN_HANDLED
    }

    g_bInterAdminVoice[id] = true
    client_cmd(id, "+voicerecord")

    new name[32]
    get_user_name(id, name, 31)
    for(new i=1; i<=g_iMaxPlayers; i++)
    {
        if( !g_bAdmin[i] || !is_user_connected(i) )
        {
            continue
        }
        client_print_color(i, id, "%L", i, "VM_INTER_START", name)
    }

    return PLUGIN_HANDLED
}

public AdminCommand_InterAdminOff(id)
{
    if(!g_bInterAdminVoice[id])
        return PLUGIN_HANDLED

    g_bInterAdminVoice[id] = false
    client_cmd(id, "-voicerecord")

    new name[32]
    get_user_name(id, name, 31)
    for(new i=1; i<=g_iMaxPlayers; i++)
    {
        if( !g_bAdmin[i] || !is_user_connected(i) )
        {
            continue
        }
        client_print_color(i, id, "%L", i, "VM_INTER_STOP")
    }

    return PLUGIN_HANDLED
}
11 Ноя 2022
Error:
 

Вложения

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
1. Неверный раздел.
2. На работу не влияет.
3. В предупреждении чётко и ясно сказано в чём дело.
4. Уже неоднократно спрашивали на форуме по этому поводу, можно было воспользоваться поиском.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу