Преработка на HOOK menu

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
petyrkpetrov
Извън линия
Потребител
Потребител
Мнения: 47
Регистриран на: 08 Окт 2016, 18:53
Се отблагодари: 8 пъти

Преработка на HOOK menu

Мнение от petyrkpetrov » 12 Юни 2017, 11:43

Ако може да се добави в меню-то, когато дадеш ХООК на някой нормален играч след като той излезе да му се премахва ХООК-а, понеже в тази версия, когато дадеш на нормален играч и той излезе, и влезе, ХООК-а си остава. :mad:

hookmenu.sma
(6.2 KiB) Свалено 129 пъти
hookmenu.sma
(6.2 KiB) Свалено 129 пъти
MANSION СЪРВЪРИ :
93.123.16.44:27020 - HNS
93.123.16.44:27021 - Dust2 Classic
85.217.196.76:27016 - Long Jump 10/100aa
85.217.196.76:27017 - Dust2 Respawn

Аватар
JustInCase
Извън линия
Потребител
Потребител
Мнения: 582
Регистриран на: 14 Окт 2016, 23:31
Се отблагодари: 4 пъти
Получена благодарност: 15 пъти

Re: Преработка на HOOK menu

Мнение от JustInCase » 12 Юни 2017, 11:54

Код за потвърждение: Избери целия код

/*
*  §§§§§§§§§§   §§§§§§§§
*  §§      §§  §§
*  §§§§§§§§§§  §§     
*  §§      §§  §§§§§§§
*  §§      §§        $§§
*  §§      §§        §§
*  §§      §§ §§§§§§§§
*
*
*  Last Edited: 01/02/2016
*
*  =============================
*           Changelog: 
*  =============================
*      Mod By KilLeR MeN =) 
*  =============================
*   Fb.com/abdetaouab.bouharrak
*/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <Hamsandwich>

#define PLUGIN "Spider Menu"
#define VERSION "1.0"
#define AUTHOR "KilLeR MeN =)"

#define RANDOM_NUM random_num(0,255)


enum color {normal = 1, green, team}
enum {HOOK_OFF, HOOK_RELEASE, HOOK_ON}
new gAllowedHook[33]
new bool:g_bCanUseHook[33]
new g_bIsHooked[33]
new g_iHookOrigin[33][3]
new g_SpriteBeam
new g_iMaxPlayers

public plugin_init() 
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_forward(FM_Think, "fw_ThinkEnt")
    register_clcmd("say /hook", "menuHook");
    register_clcmd("showmenu", "menuHook");
    register_clcmd("+hook", "HookOn")
    register_clcmd("-hook", "HookOff")
    
    new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString , "info_target"))
    set_pev(iEnt, pev_classname, "hook_think")
    set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
    
    RegisterHam(Ham_Spawn, "player", "fw_player_respawn", 1)
    
    g_iMaxPlayers = get_maxplayers()
}
public fw_player_respawn(id)
{
    if(!is_user_alive(id) || !is_user_connected(id))
        return PLUGIN_HANDLED
        
    if(get_user_flags(id) & ADMIN_KICK)
        gAllowedHook[id] = true
        
    return PLUGIN_HANDLED
}
public menuHook(id){
    if (!(get_user_flags(id) & ADMIN_KICK)){
        
        ColorChat(id,"^4[AS] ^1You Are Not Admin ^4 & Thanks");
        return PLUGIN_HANDLED;
    }
    new Menu = menu_create("\r[\y@hiN\r] \wHook Menu ^n", "menuHookHandler");
    new szNum[3];
    new szName[32];
    new players[32];
    new buffer[64];
    new iNum;
    get_players(players, iNum ,"ch");
    for (new i=0; i < iNum; i++){
        new p = players[i];
        get_user_name(p, szName, charsmax(szName));
        formatex(buffer, charsmax(buffer), "%s - [%s\w]", szName, gAllowedHook[p]?"\yON":"\rOFF");
        num_to_str(p, szNum, charsmax(szNum));
        menu_additem(Menu, buffer, szNum);
    }
    menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL)
    menu_display(id, Menu);
    return PLUGIN_HANDLED;
}

public menuHookHandler(id, Menu, item){
    if(item == MENU_EXIT){
        menu_destroy(Menu);
        return PLUGIN_HANDLED;
    }
    new szName[32]
    new Data[7], Name[64];
    new Access, Callback;
    get_user_name(id,szName,charsmax (szName))
    menu_item_getinfo(Menu, item, Access, Data, 5, Name, 63, Callback);
    new p = str_to_num(Data);
    
    new sName[32]
    get_user_name(p, sName, charsmax(szName)) 
    new name[33]
    get_user_name(id, name, charsmax(name))
    
    gAllowedHook[p] = !gAllowedHook[p];
    
    ColorChat(0,"^1Someone ^4%s^1 ^3%s^1.",gAllowedHook[p] ? "^3give ^1hook to":"^3remove ^1hook to",sName);
    
    client_cmd(id, "showmenu");
    return PLUGIN_HANDLED;
}

public plugin_precache() 
{
    precache_sound("weapons/usp2.wav")
    g_SpriteBeam = engfunc(EngFunc_PrecacheModel, "sprites/zbeam1.spr")
}
public client_connect(id)
    gAllowedHook[id] = false
public client_putinserver(id) 
{
    g_bIsHooked[id] = HOOK_OFF
    if(get_user_flags(id) & ADMIN_KICK)
        gAllowedHook[id] = true
    
}

public client_disconnect(id) 
{
    g_bIsHooked[id] = HOOK_OFF
    gAllowedHook[id] = false
}

public HookOn(id)  
{
    if(!g_bCanUseHook[id] && !gAllowedHook[id])
        return PLUGIN_HANDLED
    
    if(is_user_connected(id) && is_user_alive(id) )
    {
        get_user_origin(id, g_iHookOrigin[id], 3)
        
        
        if(callfunc_begin("DetectCheat","Killer.amxx") == 1) 
        {
            callfunc_push_int(id)
            callfunc_push_str("Hook")
            callfunc_end()
        }
        g_bIsHooked[id] = HOOK_ON
        emit_sound(id, CHAN_STATIC, "weapons/usp2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
    }
    return PLUGIN_HANDLED
}

public HookOff(id) 
{
    g_bIsHooked[id] = HOOK_RELEASE
    return PLUGIN_HANDLED
}

public fw_ThinkEnt(iEnt)
{
    if (pev_valid(iEnt)) 
    { 
        static ClassName[33]
        pev(iEnt, pev_classname, ClassName, 32)
        
        if(equal(ClassName, "hook_think"))
        {
            fw_HookThink()
            set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
        }
    }
}

public fw_HookThink()
{
    static id, origin[3], Float:velocity[3], distance
    for(id = 1 ; id <= g_iMaxPlayers ; id++) 
    {
        if(g_bIsHooked[id] == HOOK_ON )
        {
            message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
            write_byte(1)              // TE_BEAMENTPOINT
            write_short(id)              // entid
            write_coord(g_iHookOrigin[id][0]) // origin
            write_coord(g_iHookOrigin[id][1]) // origin
            write_coord(g_iHookOrigin[id][2]) // origin
            write_short(g_SpriteBeam)      // sprite index
            write_byte(0)              // start frame
            write_byte(0)              // framerate
            write_byte(2)              // life
            write_byte(30)              // width
            write_byte(0)
            write_byte(RANDOM_NUM) // r
            write_byte(RANDOM_NUM) // g
            write_byte(RANDOM_NUM) // b
            write_byte(500)                   // brightness
            write_byte(0)                   // speed
            message_end()
            
            get_user_origin(id, origin)
            distance = get_distance(g_iHookOrigin[id], origin)
            if(distance > 25)  
            { 
                velocity[0] = (g_iHookOrigin[id][0] - origin[0]) * (2.0 * 350 / distance)
                velocity[1] = (g_iHookOrigin[id][1] - origin[1]) * (2.0 * 350 / distance)
                velocity[2] = (g_iHookOrigin[id][2] - origin[2]) * (2.0 * 350 / distance)
                set_pev(id, pev_velocity, velocity)
            }
        }
        else if(g_bIsHooked[id] == HOOK_RELEASE)
        {
            g_bIsHooked[id] = HOOK_OFF
        }
    }
}

stock ColorChat( const id, const input[ ], any:... ) 
{ 
    new count = 1, players[ 32 ] 
    
    static msg[ 191 ] 
    vformat( msg, 190, input, 3 ) 
    
    replace_all( msg, 190, ".v", "^4" ) /* vert */ 
    replace_all( msg, 190, ".y", "^1" ) /* yellow/blanc */ 
    replace_all( msg, 190, ".t", "^3" ) /* ct=Blue| t=red */ 
    replace_all( msg, 190, ".x", "^0" ) /* normal*/ 
    
    if( id ) players[ 0 ] = id; else get_players( players, count, "ch" ) 
    {
    for( new i = 0; i < count; i++ ) 
    { 
        if( is_user_connected( players[ i ] ) ) 
        { 
            message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[ i ] ) 
            write_byte( players[ i ] ); 
            write_string( msg ); 
            message_end( ); 
        } 
    } 
    } 
} 
Тествай.
MANSION - HNS : 45.144.155.99:27026
ONLINE

Аватар
petyrkpetrov
Извън линия
Потребител
Потребител
Мнения: 47
Регистриран на: 08 Окт 2016, 18:53
Се отблагодари: 8 пъти

Re: Преработка на HOOK menu

Мнение от petyrkpetrov » 12 Юни 2017, 12:05

Супер, благодаря.
MANSION СЪРВЪРИ :
93.123.16.44:27020 - HNS
93.123.16.44:27021 - Dust2 Classic
85.217.196.76:27016 - Long Jump 10/100aa
85.217.196.76:27017 - Dust2 Respawn

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 2 госта