• Real-Arena
  • Contact
  • Cash Money
  • Prezintă-te
  • Counter-Strike
  • Metin2
  • Minecraft
  • SA:MP
  • [SHOP] Steam, Gift, Cards, Items
  • Giveaway STEAM
  • AcasaAcasa  IndexIndex  Regulament  Cont Premium  Ultimele imaginiUltimele imagini  CăutareCăutare  ÎnregistrareÎnregistrare  ConectareConectare  

    Distribuiţi
     

     Furien Anti-Camp

    Vezi subiectul anterior Vezi subiectul urmator In jos 
    AutorMesaj
    [RLA] # HazZaRD
    Utilizator Premium
    [RLA] # HazZaRD
    Dark Addicted
    Mesaje : 541
    Furien Anti-Camp Empty
    MesajSubiect: Furien Anti-Camp   
    Furien Anti-Camp I_icon_minitimeLun 01 Dec 2014, 23:38

    Descriere: Plugin creat in urma solicitarii acestuia ( . ).
    Acest este un plugin Anti-Camp specific modului Furien.
    Jucatorii care stau nemiscati ( nu apasa W | A | S | D ) timp de 5 sau mai multe secunde, vor primi blind pana cand se vor misca.
    In primele 25 de secunde dupa fiecare spawn.. jucatorii care stau afk mai mult de 5 secunde primesc blind.. si apoi sunt avertizati cum ca daca nici in urmatoarele 5 secunde nu se vor misca, vor primi slay.
    Download: Acest plugin necesita compilarea locala!

    Cod:
    #include < amxmodx >
    #include < fakemeta >
    #include < hamsandwich >

    #pragma semicolon 1


    #define PLUGIN "Furien Anti-Camp"
    #define VERSION "0.0.1"

    // --|Pentru teste.. cateva mesajela fiecare functie.. sa imi dau seama unde si ce nu merge.
    // --|Lasati // in fata!
    //#define TESTING

    #define TASK_SPAWN   06081993

    // --| ColorChat.
    enum Color
    {
       NORMAL = 1,       // Culoarea care o are jucatorul setata in cvar-ul scr_concolor.
       GREEN,          // Culoare Verde.
       TEAM_COLOR,       // Culoare Rosu, Albastru, Gri.
       GREY,          // Culoarea Gri.
       RED,          // Culoarea Rosu.
       BLUE,          // Culoarea Albastru.
    };

    new TeamName[  ][  ] =
    {
       "",
       "TERRORIST",
       "CT",
       "SPECTATOR"
    };
    // --| ColorChat.

    new const g_szTag[ ] = "[Furien Anti-Camp]";
    new const g_szClassName[ ] = "Askhanar's_MagicEntity";

    new Float:g_fUserOrigin[ 33 ][ 3 ];
    new Float:g_fUserOldOrigin[ 33 ][ 3 ];

    new bool:g_bSpawnCheckEnabled = false;

    new bool:g_bAlive[ 33 ];
    new bool:g_bConnected[ 33 ];
    new bool:g_bUserIsCamping[ 33 ];

    new g_iUserCampSeconds[ 33 ];
    new g_iMagicEntity;

    public plugin_init( )
    {
       register_plugin( PLUGIN, VERSION, "Askhanar" );
       
       register_event( "HLTV", "ev_HookRoundStart", "a", "1=0", "2=0" );
       
       RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawnPost", true );
       RegisterHam( Ham_Killed, "player", "Ham_PlayerKilledPost", true );
       
       
       new iEnt;
       CreateMagicEntity:
       
       iEnt = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
       if( !iEnt || !pev_valid( iEnt ) )
          goto CreateMagicEntity;
       
       set_pev( iEnt, pev_classname, g_szClassName );
       set_pev( iEnt, pev_nextthink, get_gametime(  ) + 0.3 );
       register_forward( FM_Think, "FM_MagicEntityThink" );
       
       g_iMagicEntity = iEnt;
       
    }

    public client_putinserver( id )
    {
       if( is_user_bot( id ) )
          return PLUGIN_CONTINUE;
       
       g_bConnected[ id ] = true;
       g_bAlive[ id ] = false;
       g_bUserIsCamping[ id ] = false;

       // --| Stupid compiler..
       return PLUGIN_CONTINUE;
    }

    public client_disconnect( id )
    {
       
       if( is_user_bot( id ) )
          return PLUGIN_CONTINUE;
       
       
       g_bConnected[ id ] = false;
       g_bAlive[ id ] = false;
       g_bUserIsCamping[ id ] = false;
       
       // --| Stupid compiler..
       return PLUGIN_CONTINUE;
    }

    public Ham_PlayerSpawnPost( id )
    {
       if( !is_user_alive( id ) )
          return HAM_IGNORED;
          
       #if defined TESTING
       client_print( 0, print_chat, "Functia PlayerSpawn a fost chemata!" );
       #endif
       g_bAlive[ id ] = true;
       g_bUserIsCamping[ id ] = false;
       g_iUserCampSeconds[ id ] = 0;
       
       return HAM_IGNORED;
    }

    public Ham_PlayerKilledPost( id )
    {
       #if defined TESTING
       client_print( 0, print_chat, "Functia PlayerKilled a fost chemata!" );
       #endif
       g_bAlive[ id ] = false;
    }

    public ev_HookRoundStart( )
    {
       remove_task( TASK_SPAWN );
       
       #if defined TESTING
       client_print( 0, print_chat, "Functia RoundRestart a fost chemata!" );
       #endif
       
       g_bSpawnCheckEnabled = true;
       set_task( 25.0, "TaskDisableSpawnCheck", TASK_SPAWN );
    }

    public TaskDisableSpawnCheck( )
    {
       #if defined TESTING
       client_print( 0, print_chat, "Functia DisableSpawn a fost chemata!" );
       #endif
       g_bSpawnCheckEnabled = false;
    }

    public FM_MagicEntityThink( iEnt )
    {
       
       if( iEnt != g_iMagicEntity || !pev_valid( iEnt ) )
          return FMRES_IGNORED;
          
       set_pev( iEnt, pev_nextthink, get_gametime(  ) + 1.0 );

          
       #if defined TESTING
       client_print( 0, print_chat, "Entitatea gandeste!" );
       #endif
       
       static iPlayers[ 32 ];
       static iPlayersNum;
       
       get_players( iPlayers, iPlayersNum, "ce", "CT" );
       if( !iPlayersNum )
          return FMRES_IGNORED;
          
       static id, i;
       for( i = 0; i < iPlayersNum; i++ )
       {
          id = iPlayers[ i ];
          
          if( g_bConnected[ id ] )
          {
             if( g_bAlive[ id ] )
             {
                pev( id, pev_origin, g_fUserOrigin[ id ] );
                   
                if( g_fUserOrigin[ id ][ 0 ] == g_fUserOldOrigin[ id ][ 0 ]
                   && g_fUserOrigin[ id ][ 1 ] == g_fUserOldOrigin[ id ][ 1 ]
                   && g_fUserOrigin[ id ][ 2 ] == g_fUserOldOrigin[ id ][ 2 ] )
                {
                   g_iUserCampSeconds[ id ]++;
                   #if defined TESTING
                   client_print( 0, print_chat, "Originile sunt aceleasi!" );
                   #endif
                   
                   if( g_iUserCampSeconds[ id ] == 5 )
                   {
                      
                      #if defined TESTING
                      client_print( 0, print_chat, "Ecranul este inegrit!" );
                      #endif
                      
                      g_bUserIsCamping[ id ] = true;
                      FadeScreen( id );
                   }
                   
                   else if( g_iUserCampSeconds[ id ] > 5 && g_bSpawnCheckEnabled )
                   {
                      
                      #if defined TESTING
                      client_print( 0, print_chat, "Verificare dupa spawn!" );
                      #endif
                      
                      if( g_iUserCampSeconds[ id ] == 11 )
                      {
                         new szName[ 32 ];
                         get_user_name( id, szName, sizeof ( szName ) -1 );
                         ColorChat( 0, RED, "^x04%s^x03 %s^x01 a primit slay pentru ca este afk!", g_szTag, szName );
                         
                         user_silentkill( id );
                         
                         g_bUserIsCamping[ id ] = false;
                         g_iUserCampSeconds[ id ] = 0;
                         
                         ResetScreen( id );
                         
                      }
                      else
                         ColorChat( id, RED, "^x04%s^x01 Vei primi slay in^x03 %i^x01 secund%s daca nu te misti!",
                            g_szTag, 11 - g_iUserCampSeconds[ id ], ( 11 - g_iUserCampSeconds[ id ]  ) == 1 ? "a" : "e" );
                   }
                }
       
                else if( g_fUserOrigin[ id ][ 0 ] != g_fUserOldOrigin[ id ][ 0 ]
                   || g_fUserOrigin[ id ][ 1 ] != g_fUserOldOrigin[ id ][ 1 ]
                   || g_fUserOrigin[ id ][ 2 ] != g_fUserOldOrigin[ id ][ 2 ] )
                {
       
                   #if defined TESTING
                   client_print( 0, print_chat, "Orinigile nu sunt aceleasi!" );
                   #endif
                   
                   if( g_bUserIsCamping[ id ] )
                   {
                      
                      #if defined TESTING
                      client_print( 0, print_chat, "Scoatem blindul!" );
                      #endif
                      
                      ResetScreen( id );
                   }
                   
                   g_iUserCampSeconds[ id ] = 0;
                   g_bUserIsCamping[ id ] = false;
                }
             }
          }
          
          #if defined TESTING
          client_print( 0, print_chat, "Origini salvate in globala!" );
          #endif
          
          g_fUserOldOrigin[ id ][ 0 ] = g_fUserOrigin[ id ][ 0 ];
          g_fUserOldOrigin[ id ][ 1 ] = g_fUserOrigin[ id][ 1 ];
          g_fUserOldOrigin[ id ][ 2 ] = g_fUserOrigin[ id ][ 2 ];
       
       }
       
       return FMRES_IGNORED;
    }


    FadeScreen( id )
    {     
       

       message_begin(MSG_ONE, get_user_msgid( "ScreenFade" ), _, id );
       write_short(1<<0); // fade lasts this long duration
       write_short(1<<0); // fade lasts this long hold time
       write_short(1<<2); // fade type HOLD
       write_byte(0); // fade red
       write_byte(0); // fade green
       write_byte(0); // fade blue 
       write_byte(255); // fade alpha 
       message_end();

             
    }

    ResetScreen( id )
    {
       
       message_begin(MSG_ONE, get_user_msgid( "ScreenFade" ), _, id );
       write_short(1<<12); // fade lasts this long duration 
       write_short(1<<8); // fade lasts this long hold time 
       write_short(1<<1); // fade type OUT
       write_byte(0); // fade red 
       write_byte(0); // fade green 
       write_byte(0); // fade blue   
       write_byte(255); // fade alpha   
       message_end();
    }


    // --| ColorChat.
    ColorChat(  id, Color:iType, const msg[  ], { Float, Sql, Result, _}:...  )
    {
       
       // Daca nu se afla nici un jucator pe server oprim TOT. Altfel dam de erori..
       if( !get_playersnum( ) ) return;
       
       new szMessage[ 256 ];

       switch( iType )
       {
           // Culoarea care o are jucatorul setata in cvar-ul scr_concolor.
          case NORMAL:   szMessage[ 0 ] = 0x01;
          
          // Culoare Verde.
          case GREEN:   szMessage[ 0 ] = 0x04;
          
          // Alb, Rosu, Albastru.
          default:    szMessage[ 0 ] = 0x03;
       }

       vformat(  szMessage[ 1 ], 251, msg, 4  );

       // Ne asiguram ca mesajul nu este mai lung de 192 de caractere.Altfel pica server-ul.
       szMessage[ 192 ] = '^0';
       

       new iTeam, iColorChange, iPlayerIndex, MSG_Type;
       
       if( id )
       {
          MSG_Type  =  MSG_ONE_UNRELIABLE;
          iPlayerIndex  =  id;
       }
       else
       {
          iPlayerIndex  =  CC_FindPlayer(  );
          MSG_Type = MSG_ALL;
       }
       
       iTeam  =  get_user_team( iPlayerIndex );
       iColorChange  =  CC_ColorSelection(  iPlayerIndex,  MSG_Type, iType);

       CC_ShowColorMessage(  iPlayerIndex, MSG_Type, szMessage  );
          
       if(  iColorChange  )   CC_Team_Info(  iPlayerIndex, MSG_Type,  TeamName[ iTeam ]  );

    }

    CC_ShowColorMessage(  id, const iType, const szMessage[  ]  )
    {
       
       static bool:bSayTextUsed;
       static iMsgSayText;
       
       if(  !bSayTextUsed  )
       {
          iMsgSayText  =  get_user_msgid( "SayText" );
          bSayTextUsed  =  true;
       }
       
       message_begin( iType, iMsgSayText, _, id  );
       write_byte(  id  );      
       write_string(  szMessage  );
       message_end(  );
    }

    CC_Team_Info( id, const iType, const szTeam[  ] )
    {
       static bool:bTeamInfoUsed;
       static iMsgTeamInfo;
       if(  !bTeamInfoUsed  )
       {
          iMsgTeamInfo  =  get_user_msgid( "TeamInfo" );
          bTeamInfoUsed  =  true;
       }
       
       message_begin( iType, iMsgTeamInfo, _, id  );
       write_byte(  id  );
       write_string(  szTeam  );
       message_end(  );

       return 1;
    }

    CC_ColorSelection(  id, const iType, Color:iColorType)
    {
       switch(  iColorType  )
       {
          
          case RED:   return CC_Team_Info(  id, iType, TeamName[ 1 ]  );
          case BLUE:   return CC_Team_Info(  id, iType, TeamName[ 2 ]  );
          case GREY:   return CC_Team_Info(  id, iType, TeamName[ 0 ]  );

       }

       return 0;
    }

    CC_FindPlayer(  )
    {
       new iMaxPlayers  =  get_maxplayers(  );
       
       for( new i = 1; i <= iMaxPlayers; i++ )
          if(  is_user_connected( i )  )
             return i;
       
       return -1;
    }
    // --| ColorChat.

    Nume: Furien Anti-Camp
    Versiunea: 0.0.1
    Instalare:
    • 1. Fisierul Furien_Anti-Camp.sma il puneti in addons/amxmodx/scripting
    • 2. Fisierul Furien_Anti-Camp.amxx il puneti in addons/amxmodx/plugins
    • 3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:
      Cod:
      Furien_Anti-Camp.amxx



    Ai o comunitate, dar te-ai saturat de probleme? Vino pe Real-Arena.
    Sus In jos
     

    Furien Anti-Camp

    Vezi subiectul anterior Vezi subiectul urmator Sus 
    Pagina 1 din 1

    Real-Arena România :: Jocuri - Tutoriale şi resurse :: Counter-Strike 1.6 :: Plugin-uri-