Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSSadding lines to existing invis plugin


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
So i need to add 3 more options to this code

Players
Water
Knife
Pistol
Hud
weather

replace the existing option visible and invisible with [ON] (with green text AND [OFF] with red text
for knife and pistol make them invisible just like players and water
When you make players invisible make only your team invisible not the opponent team
Hud is to turn on and off hud_draw 1 and hud_draw 0
weather is to turn off snow and rain on the server map (if possible , i only see this on a russian server)

68747470733a2f2f696d6775722e636f6d2f756e




Code:

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define MAX_ENTITYS 900+15*32 // (900+15*SERVER_SLOTS) is the calculation cs uses but it can be bypassed by the "-num_edicts <x>"-parameter

new bool:g_bPlayerInvisible[33];
new bool:g_bWaterInvisible[33];

new bool:g_bWaterEntity[MAX_ENTITYS];
new bool:g_bWaterFound;

new g_iSpectatedId[33];

public plugin_init( )
{
    register_plugin( "Invis", "2.0", "SchlumPF" );
   
    register_clcmd( "say /invis", "menuInvisDisplay" );
    register_menucmd( register_menuid( "\rInvisibility - SchlumPF^n^n" ), 1023, "menuInvisAction" );
   
    register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 );
    RegisterHam( Ham_Spawn, "player", "hamSpawnPlayer_Post", 1 );
   
    register_event( "SpecHealth2", "eventSpecHealth2", "bd" );
}

public plugin_cfg( )
{
    new ent = -1;
    while( ( ent = find_ent_by_class( ent, "func_water" ) ) != 0 )
    {
        // pev( ent, pev_skin ) ==  CONTENTS_WATER is also true on func_water entities
       
        if( !g_bWaterFound )
        {
            g_bWaterFound = true;
        }

        g_bWaterEntity[ent] = true;
    }
   
    // thanks to connor for finding the following two detections
    ent = -1;
    while( ( ent = find_ent_by_class( ent, "func_illusionary" ) ) != 0 )
    {
        if( pev( ent, pev_skin ) ==  CONTENTS_WATER )
        {
            if( !g_bWaterFound )
            {
                g_bWaterFound = true;
            }
   
            g_bWaterEntity[ent] = true;
        }
    }
   
    ent = -1;
    while( ( ent = find_ent_by_class( ent, "func_conveyor" ) ) != 0 )
    {
        if( pev( ent, pev_spawnflags ) == 3 )
        {
            if( !g_bWaterFound )
            {
                g_bWaterFound = true;
            }
   
            g_bWaterEntity[ent] = true;
        }
    }
}

public fwdAddToFullPack_Post( es_handle, e, ent, host, hostflags, player, pset )
{
    if( player && g_bPlayerInvisible[host] && host != ent && ent != g_iSpectatedId[host] )
    {
        static const Float:corner[8][3] =
        {
            { -4096.0, -4096.0, -4096.0 },
            { -4096.0, -4096.0, 4096.0 },
            { -4096.0, 4096.0, -4096.0 },
            { -4096.0, 4096.0, 4096.0 },
            { 4096.0, -4096.0, -4096.0 },
            { 4096.0, -4096.0, 4096.0 },
            { 4096.0, 4096.0, -4096.0 },
            { 4096.0, 4096.0, 4096.0 }
        };
       
        // rounded; distance from the map's center to the corners; sqrt( 4096^2 + 4096^2 + 4096^2 )
        static const Float:map_distance = 7094.480108;
       
        static Float:origin[3];
        get_es( es_handle, ES_Origin, origin );
       
        static i;
        while( get_distance_f( origin, corner[i] ) > map_distance )
        {
            if( ++i >= sizeof( corner ) )
            {
                // better to nullify the varibale now then doing it each time before the loop
                i = 0;
            }
        }
       
        set_es( es_handle, ES_Origin, corner[i] );
        set_es( es_handle, ES_Effects, get_es( es_handle, ES_Effects ) | EF_NODRAW );
    }
    else if( g_bWaterInvisible[host] && g_bWaterEntity[ent])
    {
        set_es( es_handle, ES_Effects, get_es( es_handle, ES_Effects ) | EF_NODRAW );
    }
}

public hamSpawnPlayer_Post( id )
{
    g_iSpectatedId[id] = 0;
}

// thanks to xPaw who told me about this event
public eventSpecHealth2( id )
{
    g_iSpectatedId[id] = read_data( 2 );
}

public menuInvisDisplay( id )
{
    static menu[256];

    new len = formatex( menu, 255, "\rInvisibility - SchlumPF^n^n" );
   
    len += formatex( menu[len], 255 - len, "\r1. \wPlayers: %s^n", g_bPlayerInvisible[id] ? "invisible" : "visible" );
   
    if( g_bWaterFound )
    {
        len += formatex( menu[len], 255 - len, "\r2. \wWater: %s^n", g_bWaterInvisible[id] ? "invisible" : "visible" );
    }
    //else
    //{
    //    len += formatex( menu[len], 255 - len, "\r2. \wWater: There is no water on this map!^n" );
    //}

    len += formatex( menu[len], 255 - len, "^n\r0. \wExit" );
   
    show_menu( id, ( 1<<0 | 1<<1 | 1<<9 ), menu, -1 );
       
    return PLUGIN_HANDLED;
}

public menuInvisAction( id, key )
{
    switch( key )
    {
        case 0:
        {
            g_bPlayerInvisible[id] = !g_bPlayerInvisible[id];
            menuInvisDisplay( id );
        }
        case 1:
        {
            if( g_bWaterFound )
            {
                g_bWaterInvisible[id] = !g_bWaterInvisible[id];
            }
           
            menuInvisDisplay( id );
        }
        case 9: show_menu( id, 0, "" );
    }
}

public client_connect( id )
{
    g_bPlayerInvisible[id] = false;
    g_bWaterInvisible[id] = false;
    g_iSpectatedId[id] = 0;
}

Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...