Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

История благодарностей участнику MrTsar ::: Спасибо сказали: 7
Дата поста: В теме: За сообщение: Спасибо сказали:
26.10.2017, 10:32 [UA] DNET CS Public Server #1
csuser,
Хороший сервер был!
Не так часто там играл, но всеже. Спасибо вам за вашу работу. Единственное что мне не понравилось, это то что установили паутинку. На мой взгляд это было лишним.
NichtWolf
6.12.2015, 13:26 подает сервер
Цитата(Bloo @ 6.12.2015, 14:15) *
MrTsar, все есть в "Информационная доска", я просто скопировал для информации.

Ничего не имею против) Просто думал что должно быть так)
Удаляй переписку.


soneekk, Вроде когда ставил плагины недокинул какието файлы.
Отключи последние установленые плагины и понаблюдай.
soneekk
9.1.2015, 12:30 Как сделать чтобы качались новые модели.
fum4uk, Попробуй посредством установки еще одного плагина "Плагин New Weapons [Замена моделей и звуков]". Не обращай внимание на название, он меняет любые модели. Я когда-то так делал.
fum4uk
8.1.2015, 12:28 Раздатчик здоровья
Доброго времени суток, уважаемые!
Хочу на CSDM поставить раздатчик хп. Есть код. Но Может ли кто-то сделать так что бы этот раздатчик могли ставить только игроки с флагом "t"? И еще хотелось бы запилить такую штуку что бы игроку который поставил раздатчик, добавлялись деньги если кто-то им воспользовался.
Код
Код
/*         
    ~~~~~~~~~~~~~~~~~~~~~~~
        Build Dispenser

        Like in TFC or TF2 dispensers give you armor health and ammo
        Every time you are near at a teammate dispenser, your health, amor, or ammo will refill to maximum!        
        Перевел Игорь Спижевой    
        By tuty;
    ~~~~~~~~~~~~~~~~~~~~~~~
*/



#include < amxmodx >
#include < amxmisc >

#include < fakemeta >
#include < hamsandwich >
#include < cstrike >
#include < engine >
#include < fun >

#pragma semicolon 1

#define PLUGIN_VERSION        "#1.0.1"
#define BREAK_COMPUTER        6
#define HUD_DELAYTIME        0.2

enum
{
    STATUS_BUILDING,
    STATUS_ACTIVE
};

new const gDamageSounds[ ][ ] =
{
    "debris/metal1.wav",
    "debris/metal2.wav",
    "debris/metal3.wav"
};

new const gDispenserClassname[ ] = "NiceDispenser:D";

new const gDispenserActive[ ] = "buttons/button9.wav";
new const gDispenserMdl[ ] = "models/dispenser.mdl";
new const gMetalGibsMdl[ ] = "models/computergibs.mdl";
new const gHealingSprite[ ] = "sprites/laserbeam.spr";

new gHealingBeam;
new gMetalGibs;
new gMaxPlayers;
new gHudSync;

new gCvarEnabled;
new gDispenserCost;
new gCvarDispenserHealth;
new gCvarBuildTime;
new gCvarReplenishRadius;
new gCvarSpinDispenser;
new gCvarMaxHealth;
new gCvarMaxArmor;

new Float:gDispenserOrigin[ 33 ][ 3 ];
new gBeamcolor[ 33 ][ 3 ];

new Float:flLastHudSent[ 33 ];
new Float:gDispenserHealthOff[ 33 ];

new bool:bDispenserBuild[ 33 ];

public plugin_init( )
{
    register_plugin( "Build Dispenser", PLUGIN_VERSION, "tuty" );
    
    register_event( "TextMsg", "EVENT_TextMsg", "a", "2&#Game_C", "2&#Game_w", "2&#Game_will_restart_in" );
    register_logevent( "LOG_RoundEnd", 2, "1=Round_End" );
    
    RegisterHam( Ham_TakeDamage, "info_target", "bacon_TakeDamage", 1 );
    RegisterHam( Ham_TraceAttack, "info_target", "bacon_TraceAttack" );
    RegisterHam( Ham_Player_PreThink, "player", "bacon_PreThink" );
    
    register_think( gDispenserClassname, "DispenserThink" );
    register_clcmd( "drop", "CommandDispenserBuild" );
    
    gCvarEnabled = register_cvar( "dispenser_enabled", "1" );
    gDispenserCost = register_cvar( "dispenser_cost", "500" );
    gCvarDispenserHealth = register_cvar( "dispenser_health", "900" );
    gCvarBuildTime = register_cvar( "dispenser_buildtime", "5" );
    gCvarReplenishRadius = register_cvar( "dispenser_radius", "300" );
    gCvarSpinDispenser = register_cvar( "dispenser_spin", "1" );
    gCvarMaxHealth = register_cvar( "dispenser_playermax_health", "200" );
    gCvarMaxArmor = register_cvar( "dispenser_playermax_armor", "250" );
    
    gMaxPlayers = get_maxplayers( );
    gHudSync = CreateHudSyncObj( );
}

public client_connect( id )
{
    bDispenserBuild[ id ] = false;
}

public plugin_precache( )
{    
    gHealingBeam = precache_model( gHealingSprite );
    gMetalGibs = precache_model( gMetalGibsMdl );
    
    precache_model( gDispenserMdl );
    precache_sound( gDispenserActive );
    
    new i;
    for( i = 0; i < sizeof gDamageSounds; i++ )
    {
        precache_sound( gDamageSounds[ i ] );
    }
}

public CommandDispenserBuild( id )
{
    if( !is_user_alive( id ) || get_user_weapon( id ) != CSW_KNIFE || get_pcvar_num( gCvarEnabled ) != 1 )
    {
        return PLUGIN_CONTINUE;
    }
    
    if( !( pev( id, pev_flags ) & FL_ONGROUND ) )
    {
        client_print( id, print_chat, "[AMXX] Что бы построить раздатчик нужно стоять!" );
        
        return PLUGIN_HANDLED;
    }

    if( bDispenserBuild[ id ] == true )
    {
        client_print( id, print_chat, "[AMXX] Вы уже построили раздатчик!" );
        
        return PLUGIN_HANDLED;
    }

    new iMoney = cs_get_user_money( id );
    new iCost = get_pcvar_num( gDispenserCost );
    
    if( iMoney < iCost )
    {
        client_print( id, print_chat, "[AMXX] Не хватает денег чтобы построить раздатчик... Нужно(%d$)", iCost );
        
        return PLUGIN_HANDLED;
    }

    new Float:flPlayerOrigin[ 3 ];
    pev( id, pev_origin, flPlayerOrigin );
    
    new Float:flHealth = float( get_pcvar_num( gCvarDispenserHealth ) );

    new iEntity = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
    
    if( !pev_valid( iEntity ) )
    {
        return PLUGIN_HANDLED;
    }

    set_pev( iEntity, pev_classname, gDispenserClassname );
    engfunc( EngFunc_SetModel, iEntity, gDispenserMdl );
    engfunc( EngFunc_SetSize, iEntity, Float:{ -12.0, -10.0, -12.0 }, Float:{ 12.0, 10.0, 12.0 } );
    set_pev( iEntity, pev_origin, flPlayerOrigin );
    set_pev( iEntity, pev_solid, SOLID_NOT );
    set_pev( iEntity, pev_movetype, MOVETYPE_TOSS );
    set_pev( iEntity, pev_health, flHealth );
    set_pev( iEntity, pev_takedamage, DAMAGE_YES );
    set_pev( iEntity, pev_iuser2, id );
    set_pev( iEntity, pev_iuser3, STATUS_BUILDING );
    set_pev( iEntity, pev_nextthink, get_gametime( ) + 0.1 );

    gDispenserOrigin[ id ][ 0 ] = flPlayerOrigin[ 0 ];
    gDispenserOrigin[ id ][ 1 ] = flPlayerOrigin[ 1 ];
    gDispenserOrigin[ id ][ 2 ] = flPlayerOrigin[ 2 ];
    
    gDispenserHealthOff[ id ] = flHealth;
    bDispenserBuild[ id ] = true;
    
    set_task( float( get_pcvar_num( gCvarBuildTime ) ), "BuildDispenserSolid", iEntity );
    cs_set_user_money( id, iMoney - iCost, 1 );
    client_print( id, print_chat, "[AMXX] Раздатчик успешно построен..." );
    
    return PLUGIN_HANDLED;
}

public bacon_TakeDamage( ent, idinflictor, idattacker, Float:damage, damagebits )
{
    new szClassname[ 32 ];
    pev( ent, pev_classname, szClassname, charsmax( szClassname ) );
    
    if( equal( szClassname, gDispenserClassname ) )
    {
        new iOwner = pev( ent, pev_iuser2 );

        if( pev( ent, pev_health ) <= 0.0 )
        {
            new szName[ 32 ];
            get_user_name( idattacker, szName, charsmax( szName ) );

            new Float:flOrigin[ 3 ];
            pev( ent, pev_origin, flOrigin );
                
            UTIL_BreakModel( flOrigin, gMetalGibs, BREAK_COMPUTER );
            set_pev( ent, pev_flags, pev( ent, pev_flags ) | FL_KILLME );

            if( idattacker == iOwner )
            {
                client_print( iOwner, print_chat, "[AMXX] Вы уничтожили свой раздатчик!" );
            }

            else
            {
                client_print( iOwner, print_chat, "[AMXX] %s уничтожил ваш раздатчик!", szName );
            }

            client_cmd( iOwner, "speak ^"vox/bizwarn computer destroyed^"" );
            bDispenserBuild[ iOwner ] = false;
        }
        
        gDispenserHealthOff[ iOwner ] = float( pev( ent, pev_health ) );
        emit_sound( ent, CHAN_STATIC, gDamageSounds[ random_num( 0, charsmax( gDamageSounds ) ) ], VOL_NORM, ATTN_NORM, 0, PITCH_NORM );    
    }
}

public bacon_TraceAttack( iVictim, iAttacker, Float:flDamage, Float:flDirection[ 3 ], iTr, iDamageBits )
{
    new szClassname[ 32 ];
    pev( iVictim, pev_classname, szClassname, charsmax( szClassname ) );
    
    if( equal( szClassname, gDispenserClassname ) )
    {
        new Float:flEndOrigin[ 3 ];
        get_tr2( iTr, TR_vecEndPos, flEndOrigin );
    
        UTIL_Sparks( flEndOrigin );
    }
}    

public bacon_PreThink( id )
{
    if( get_pcvar_num( gCvarEnabled ) != 0 )
    {
        if( is_user_alive( id ) && bDispenserBuild[ id ] == true )
        {
            new Float:flGameTime = get_gametime( );
            
            if( flGameTime - flLastHudSent[ id ] > HUD_DELAYTIME )
            {
                flLastHudSent[ id ] = flGameTime;

                set_hudmessage( gBeamcolor[ id ][ 0 ], gBeamcolor[ id ][ 1 ], gBeamcolor[ id ][ 2 ], 0.0, 0.21, 1, 6.0, HUD_DELAYTIME );
                ShowSyncHudMsg( id, gHudSync, ">>>[ Раздатчик ]<<<^n^nСтатус раздатчика(healt): [%d]", floatround( gDispenserHealthOff[ id ] ) );
            }
        }
    }
}
            
public DispenserThink( iEnt )
{
    if( pev_valid( iEnt ) )
    {
        new iStatus = pev( iEnt, pev_iuser3 );
        new iOwner = pev( iEnt, pev_iuser2 );

        switch( iStatus )
        {
            case STATUS_BUILDING:
            {
                set_rendering( iEnt, kRenderFxDistort, 255, 255, 255, kRenderTransAdd, 70 );
            }
            
            case STATUS_ACTIVE:
            {
                new id;
                for( id = 1; id <= gMaxPlayers; id++ )
                {
                    if( is_user_alive( id ) && cs_get_user_team( id ) == cs_get_user_team( iOwner ) )
                    {
                        new Float:flOrigin[ 3 ], iOrigin1[ 3 ], iOrigin2[ 3 ];
                        pev( id, pev_origin, flOrigin );
                        
                        FVecIVec( gDispenserOrigin[ iOwner ], iOrigin1 );
                        FVecIVec( flOrigin, iOrigin2 );

                        if( get_distance_f( gDispenserOrigin[ iOwner ], flOrigin ) <= float( get_pcvar_num( gCvarReplenishRadius ) ) )
                        {
                            UTIL_GiveWeaponAmmo( id );
                            
                            // people will ask why i didn't used if and else if...
                            // because i want to recharge health and armor and ammo in same time if needed :D

                            if( get_user_health( id ) < get_pcvar_num( gCvarMaxHealth ) )
                            {
                                set_user_health( id, get_user_health( id ) + 1 );
                            }
                            
                            if( get_user_armor( id ) < get_pcvar_num( gCvarMaxArmor ) )
                            {
                                set_user_armor( id, get_user_armor( id ) + 1 );
                            }
                            
                            UTIL_BeamEnts( iOrigin1, iOrigin2, gBeamcolor[ iOwner ][ 0 ], gBeamcolor[ iOwner ][ 1 ], gBeamcolor[ iOwner ][ 2 ] );
                        }
                    }
                }
            }
        }
        
        if( get_pcvar_num( gCvarSpinDispenser ) == 1 )
        {
            new Float:flAngles[ 3 ];
            pev( iEnt, pev_angles, flAngles );
            
            flAngles[ 1 ] += 1.0;
            
            set_pev( iEnt, pev_angles, flAngles );
        }

        set_pev( iEnt, pev_nextthink, get_gametime( ) + 0.1 );
    }
}

public BuildDispenserSolid( iEntity )
{
    if( pev_valid( iEntity ) )
    {
        new iOwner = pev( iEntity, pev_iuser2 );

        switch( cs_get_user_team( iOwner ) )
        {
            case CS_TEAM_T:
            {
                gBeamcolor[ iOwner ][ 0 ] = 255, gBeamcolor[ iOwner ][ 1 ] = 0, gBeamcolor[ iOwner ][ 2 ] = 0;
                set_rendering( iEntity, kRenderFxGlowShell, gBeamcolor[ iOwner ][ 0 ], gBeamcolor[ iOwner ][ 1 ], gBeamcolor[ iOwner ][ 2 ], kRenderNormal, 3 );
            }
        
            case CS_TEAM_CT:
            {
                gBeamcolor[ iOwner ][ 0 ] = 0, gBeamcolor[ iOwner ][ 1 ] = 0, gBeamcolor[ iOwner ][ 2 ] = 255;
                set_rendering( iEntity, kRenderFxGlowShell, gBeamcolor[ iOwner ][ 0 ], gBeamcolor[ iOwner ][ 1 ], gBeamcolor[ iOwner ][ 2 ], kRenderNormal, 3 );
            }
        }

        set_pev( iEntity, pev_solid, SOLID_BBOX );
        set_pev( iEntity, pev_iuser3, STATUS_ACTIVE );
        engfunc( EngFunc_DropToFloor, iEntity );
        
        emit_sound( iEntity, CHAN_STATIC, gDispenserActive, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
    }
}

public EVENT_TextMsg( )
{
    UTIL_DestroyDispensers( );
}

public LOG_RoundEnd( )
{
    UTIL_DestroyDispensers( );
}


/*         
    ~~~~~~~~~~~~~~~~~~~~~~~
        Stocks
    ~~~~~~~~~~~~~~~~~~~~~~~
*/


stock UTIL_DestroyDispensers( )
{
    new iEnt = FM_NULLENT;
    
    while( ( iEnt = find_ent_by_class( iEnt, gDispenserClassname ) ) )
    {
        new iOwner = pev( iEnt, pev_iuser2 );
        
        bDispenserBuild[ iOwner ] = false;
        set_pev( iEnt, pev_flags, pev( iEnt, pev_flags ) | FL_KILLME );
    }
}

stock UTIL_BreakModel( Float:flOrigin[ 3 ], model, flags )
{
    engfunc( EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flOrigin, 0 );
    write_byte( TE_BREAKMODEL );
    engfunc( EngFunc_WriteCoord, flOrigin[ 0 ] );
    engfunc( EngFunc_WriteCoord, flOrigin[ 1 ] );
    engfunc( EngFunc_WriteCoord, flOrigin[ 2 ] );
    write_coord( 16 );
    write_coord( 16 );
    write_coord( 16 );
    write_coord( random_num( -20, 20 ) );
    write_coord( random_num( -20, 20 ) );
    write_coord( 10 );
    write_byte( 10 );
    write_short( model );
    write_byte( 10 );
    write_byte( 9 );
    write_byte( flags );
    message_end( );
}

stock UTIL_BeamEnts( iStart[ 3 ], iEnd[ 3 ], r, g, b )
{
    message_begin( MSG_PVS, SVC_TEMPENTITY, iStart );
    write_byte( TE_BEAMPOINTS );
    write_coord( iStart[ 0 ] );
    write_coord( iStart[ 1 ] );
    write_coord( iStart[ 2 ] );
    write_coord( iEnd[ 0 ] );
    write_coord( iEnd[ 1 ] );
    write_coord( iEnd[ 2 ] );
    write_short( gHealingBeam );
    write_byte( 5 );
    write_byte( 2 );
    write_byte( 1 );
    write_byte( 80 );
    write_byte( 1 );
    write_byte( r );
    write_byte( g );
    write_byte( b );
    write_byte( 130 );
    write_byte( 0 );
    message_end( );
}

stock UTIL_GiveWeaponAmmo( index )
{
    new szCopyAmmoData[ 40 ];
    
    switch( get_user_weapon( index ) )
    {
        case CSW_P228: copy( szCopyAmmoData, charsmax( szCopyAmmoData ), "ammo_357sig" );
        case CSW_SCOUT, CSW_G3SG1, CSW_AK47: copy( szCopyAmmoData, charsmax( szCopyAmmoData ), "ammo_762nato" );
        case CSW_XM1014, CSW_M3: copy( szCopyAmmoData, charsmax( szCopyAmmoData ), "ammo_buckshot" );
        case CSW_MAC10, CSW_UMP45, CSW_USP: copy( szCopyAmmoData, charsmax( szCopyAmmoData ), "ammo_45acp" );
        case CSW_SG550, CSW_GALIL, CSW_FAMAS, CSW_M4A1, CSW_SG552, CSW_AUG: copy( szCopyAmmoData, charsmax( szCopyAmmoData ), "ammo_556nato" );
        case CSW_ELITE, CSW_GLOCK18, CSW_MP5NAVY, CSW_TMP: copy( szCopyAmmoData, charsmax( szCopyAmmoData ), "ammo_9mm" );
        case CSW_AWP: copy( szCopyAmmoData, charsmax( szCopyAmmoData ), "ammo_338magnum" );
        case CSW_M249: copy( szCopyAmmoData, charsmax( szCopyAmmoData ), "ammo_556natobox" );
        case CSW_FIVESEVEN, CSW_P90: copy( szCopyAmmoData, charsmax( szCopyAmmoData ), "ammo_57mm" );
        case CSW_DEAGLE: copy( szCopyAmmoData, charsmax( szCopyAmmoData ), "ammo_50ae" );
    }
    
    give_item( index, szCopyAmmoData );
}

stock UTIL_Sparks( Float:flOrigin[ 3 ] )
{
    engfunc( EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flOrigin, 0 );
    write_byte( TE_SPARKS );
    engfunc( EngFunc_WriteCoord, flOrigin[ 0 ] );
    engfunc( EngFunc_WriteCoord, flOrigin[ 1 ] );
    engfunc( EngFunc_WriteCoord, flOrigin[ 2 ] );
    message_end( );
}

/*         
    ~~~~~~~~~~~~~~~~~~~~~~~
          Конец кода
    ~~~~~~~~~~~~~~~~~~~~~~~
*/
strikerman
24.10.2014, 13:13 Плагин контроля/наказания за тимкилл
Цитата(Villlenka @ 24.10.2014, 14:10) *
Всем привет!
Хочу включить фф на своем паблике, но прежде чем это сделать нужен хороший плагинчик для контроля/наказания любителей пострелять по своим. Может кто подсказать название/ссылку на подобный плагин? Заранее благодарен.

ATAC
ссылка Скачать
BaJIepbI4
8.9.2014, 12:30 Непонятный разброс (ИгроХост).
Цитата(Takashi Murakami @ 8.9.2014, 9:30) *
так-с... ребят после ваших советов. Стрельба стала лучше. Но на чуть чуть. С мки вроде нормально теперь. А вот с ак-47 все равно криво как-то.. Сейчас Снова отключаю все плагины скальпеля и ставлю аналог

Я сталкивался с такой проблемой на мсерверс. Думал что говнохост и т.д. Но как оказалось проблема была исключительно в кривых плагинах.
amx_hpk.amxx - пинг кикер. только был аналог, он херил стрельбу.
army_ranks_ultimate.amxx - также были улучшения после его отключения
Ну а вообще разобрался я с проблемой так:
отключил все плагины
Начал ставить новые аналоги обязательно способом компиляции исходников
после чего стрельба стала великолепной что заметно сказалось на онлайне)
Takashi Murakami
22.8.2014, 11:11 Звук при сообщении в чат
Цитата(Legenda @ 22.8.2014, 12:04) *
правильный код во втором посте)
не нужно плодить сущности
используется стандартные звуковые файлы

spk только wav mono проигрывает

Ничего из перечисленного выше не дает результат!
anasbry