Jump to content
  • Chmurka
  • Boróweczka
  • Jabłuszko
  • Limonka
  • Czekoladka
  • Węgielek
Sign in to follow this  
MAGNET

[CS:GO] Bombsite Limiter PL (BSLimiter)

Recommended Posts

Jasne, możesz użyc biblioteki multicolors. Dodaj sobie do kompilatora i zedytuj komunikaty.

 

Dostępne kolory:

"{default}", "{darkred}", "{green}", "{lightgreen}", "{red}", "{blue}", "{olive}", "{lime}", "{lightred}", "{purple}", "{grey}", "{yellow}", "{orange}", "{bluegrey}", "{lightblue}", "{darkblue}", "{grey2}", "{orchid}", "{lightred2}"

 

multicolors.zip
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

  • Lubię to! 2
  • Kocham to! 1

Share this post


Link to post
Share on other sites
Posted (edited)

Plugin działa cacy.

Obecnie na mapach, które są wypisane w .sp czyli : de_dust2, de_train, de_inferno, de_cbble grany jest non stop jeden BS.  Taki, który jest wpisany w pluginie.

Na innych mapach typu mirage, cache są grane raz bombsite A, a raz B. I tak na zmiane. Chciałbym żeby na mapach wyżej podanych również były grane BSY na zmianę.

Co muszę dodać/zmienić w pliku .sp?

 

Spoiler

#pragma semicolon 1
#include <sourcemod>    
#include <sdktools>
#include <cstrike>

#define    STANDARDMAPSMAX    12

new String:BSAL[1];
new EIBA = -1;
new EIBB = -1;
new Handle:Timer = INVALID_HANDLE;
new String:StandardMaps[STANDARDMAPSMAX][2][11] =
{    
    {
        "de_aztec","B"
    },
    {
        "de_cbble","A"
    },
    {
        "de_chateau","A"
    },
    {
        "de_dust","A"
    },
    {
        "de_dust2","A"
    },
    {
        "de_inferno","B"
    },
    {
        "de_nuke","B"
    },
    {
        "de_piranesi","A"
    },
    {
        "de_port","A"
    },
    {
        "de_prodigy","B"
    },
    {
        "de_tides","A"
    },
    {
        "de_train","A"
    }
};

public Plugin:myinfo =
{
    name = "Bombsite Limiter",
    author = "Tomasz 'anacron' Motylinski",
    description = "Limiting Bomsites when due to low CT players.",
    version = "1.2.3",
    url = "http://anacron.pl/"
}
public OnPluginStart()
{
    HookEvent("round_freeze_end",Event_RoundFreezeEnd,EventHookMode_Post); 
    HookEvent("bomb_planted",Event_RoundEnd,EventHookMode_Post); 
    HookEvent("round_end",Event_RoundEnd,EventHookMode_Post); 
    CreateConVar("sm_bslimiter","1.2.3","Version Information",FCVAR_REPLICATED|FCVAR_NOTIFY);
}
stock bool:IsVecBetween(const Float:vecVector[3],const Float:vecMin[3],const Float:vecMax[3]) 

    return ( (vecMin[0] <= vecVector[0] <= vecMax[0]) && 
             (vecMin[1] <= vecVector[1] <= vecMax[1]) && 
             (vecMin[2] <= vecVector[2] <= vecMax[2])    ); 
}
public Message()
{
    PrintToChatAll("[BS Limiter] W druzynie CT jest za malo graczy - wlaczony tylko BombSite %s.",BSAL);
    PrintHintTextToAll("Podczas tej rundy wlaczony bedzie tylko BombSite %s!",BSAL);
}
public Action:RepeatMessage(Handle:timer)
{
    Message();
}
public Action:Event_RoundFreezeEnd (Handle:event,const String:name[],bool:dontBroadcast)
{
    if(IsValidEntity(EIBA)) 
    {
        EIBA = -1;
    }
    if(IsValidEntity(EIBB)) 
    {
        EIBB = -1;
    }
    if(Timer != INVALID_HANDLE)
    {
        CloseHandle(Timer);
        Timer = INVALID_HANDLE;
    }

    new Float:VBCPA[3]; 
    new Float:VBCPB[3]; 
    new EI = -1;
    
    EI = FindEntityByClassname(EI,"cs_player_manager");
    
    if(IsValidEntity(EI)) 
    { 
        GetEntPropVector(EI,Prop_Send,"m_bombsiteCenterA",VBCPA); 
        GetEntPropVector(EI,Prop_Send,"m_bombsiteCenterB",VBCPB); 
    } 
    
    EI = -1; 
    EI = FindEntityByClassname(EI,"func_bomb_target");
    
    while(IsValidEntity(EI)) 
    { 
        new Float:VBMin[3]; 
        new Float:VBMax[3]; 
         
        GetEntPropVector(EI,Prop_Send,"m_vecMins",VBMin); 
        GetEntPropVector(EI,Prop_Send,"m_vecMaxs",VBMax); 
         
        if (IsVecBetween(VBCPA,VBMin,VBMax)) 
        { 
            EIBA = EI; 
        } 
        else if (IsVecBetween(VBCPB,VBMin,VBMax)) 
        { 
            EIBB = EI; 
        } 
        EI = FindEntityByClassname(EI,"func_bomb_target");
    }
    
    if(IsValidEntity(EIBA) && IsValidEntity(EIBB))
    {
        new CTPlayers = GetTeamClientCount(CS_TEAM_CT);
        new TTPlayers = GetTeamClientCount(CS_TEAM_T);

        if(((CTPlayers > TTPlayers) && (TTPlayers == 1 || CTPlayers > 3)) || CTPlayers > 4)
        {
            AcceptEntityInput(EIBB,"Enable");
            AcceptEntityInput(EIBA,"Enable");
            BSAL = "";
            PrintHintTextToAll("Wszystkie BombSite'y sa dostepne w tej rundzie!");
            PrintCenterTextAll("Wszystkie BombSite'y sa dostepne w tej rundzie!");
        }
        else
        {
            if(GetRandomInt(1,2) == 1)
            {
                AcceptEntityInput(EIBA,"Disable");
                AcceptEntityInput(EIBB,"Enable");
                BSAL = "B";
            }
            else
            {
                AcceptEntityInput(EIBB,"Disable");
                AcceptEntityInput(EIBA,"Enable");
                BSAL = "A";
            }
            decl String:CurrentMap[256];
            GetCurrentMap(CurrentMap,sizeof(CurrentMap));
            for(new i=0; i<STANDARDMAPSMAX; i++)
            {
                if(StrEqual(CurrentMap,StandardMaps[0],false)) 
                {
                    if(StrEqual(StandardMaps[1],"B",false))
                    {
                        AcceptEntityInput(EIBA,"Disable");
                        AcceptEntityInput(EIBB,"Enable");
                        BSAL = "B";
                    }
                    else
                    {
                        AcceptEntityInput(EIBB,"Disable");
                        AcceptEntityInput(EIBA,"Enable");
                        BSAL = "A";
                    }
                }
            }
            if(GetClientCount(true) > 1)
            {
                Message();
                Timer = CreateTimer(15.0,RepeatMessage, _,TIMER_REPEAT); 
            }
        }
    }
}
public Action:Event_RoundEnd (Handle:event,const String:name[],bool:dontBroadcast)
{
    if(Timer != INVALID_HANDLE)
    {
        CloseHandle(Timer);
        Timer = INVALID_HANDLE;
    }
    if(IsValidEntity(EIBA)) 
    {
        AcceptEntityInput(EIBA,"Enable");
        EIBA = -1;
    }
    if(IsValidEntity(EIBB)) 
    {
        AcceptEntityInput(EIBB,"Enable");
        EIBB = -1;
    }
}

 

Edited by KoOsTeK

Share this post


Link to post
Share on other sites

Podmień którąś z tych mapek z listy (np. de_train) i wpisz "de_mirage".

Pamiętaj tylko żeby sprawdzić że jest odpowiednia ilość mapek, bo w pluginie jest bodajże 11, jeśli byś chciał dodać osobno mapkę to musisz poustawiać wszystko żeby ci błędu nie wywaliło.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

Nasza historia

Na początku byliśmy małą grupą internetowych znajomych, którzy stwierdzili, że potrzebne jest solidne forum, na którym znajdą się ludzie z dużą wiedzą programistyczną ukierunkowaną na CS:GO. Pomysł powstał na początku 2018 roku, a parę miesięcy później, 19 kwietnia, powstała ta strona internetowa. Jako alternatywna odpowiedź na inne tego typu miejsca, poważnie podeszliśmy do tematu, najpierw tłumacząc angielską dokumentację SourceMod'a na język polski, a potem pisząc rozległe poradniki i wypełniając forum najpotrzebniejszymi rzeczami dla właścicieli serwerów i programistów. Cała nasza Ekipa jest dumna z pracy jaką w to włożyliśmy i cieszymy się że zbierają się wokół nas zarówno ludzie znający tematy sourcepawn'a i konfiguracji, jak i również nowe twarze w tym "biznesie", którym z chęcią niesiemy wiedzę oraz pomoc w rozwiązywaniu problemów.

Największe modyfikacje serwerowe

×
×
  • Create New...