Skocz do zawartości
MAGNET

[CS:GO] Bombsite Limiter PL (BSLimiter)

Rekomendowane odpowiedzi

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!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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;
    }
}

 

Edytowane przez KoOsTeK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mam problem z tym pluignem. Mam serwer only mirage, chciałbym aby grany był tylko BS A, ale po podmianie jednej z map (train) ciągle grane jest A/B. Pomoże ktoś ?

Edytowane przez cruz

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

da się zrobić aby losowało side który będzie aktywny jeśli jest mniej niż (liczba potrzebna na 2 sidey) w sensie raz A potem B próbowałem sam ustawić ale nie idzie

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
W dniu 6.05.2020 o 00:36, Shadow napisał:

da się zrobić aby losowało side który będzie aktywny jeśli jest mniej niż (liczba potrzebna na 2 sidey) w sensie raz A potem B próbowałem sam ustawić ale nie idzie

 

 

Cytat

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_mirage","A"
    },
    {
        "de_vertigo","A"
    },
    {
        "de_overpass","B"
    },
    {
        "de_tides","A"
    },
    {
        "de_train","A"
    }
};

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@rabbit. nie zrozumiałeś, ale napiszę to inaczej odrazu (chodzi mi o to aby na jednej MAPIE "konkretnie mirage" losowało jeden z dwóch sideów który będzie dostępny w danej rundzie jesli nie ma wystarczającej ilości graczy, wiem, że da sie tak zrobić bo raz jakoś zrobiłem ale to było sporo czasu temu i nie pamiętam jak) 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam mam problem ponieważ zedytowałem plugin, żeby był na Olny mirage i wyskakuje mi taki błąd:


/home/groups/sourcemod/upload_tmp/phpGozW0G.sp(20) : error 052: multi-dimensional arrays must be fully initialized

 

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

co trzeba było by zrobić, żeby wiadomość który bs jest grany nie wyświetlała się 15 razy w rundzie tylko raz albo 2? Troche nie potrzebny spam robi 😜 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
32 minuty temu, pompaxtytus napisał:

co trzeba było by zrobić, żeby wiadomość który bs jest grany nie wyświetlała się 15 razy w rundzie tylko raz albo 2? Troche nie potrzebny spam robi 😜 

 

Zmień timer (15.0):

Timer = CreateTimer(15.0,RepeatMessage, _,TIMER_REPEAT); 

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
28 minut temu, Shazzy napisał:

Zmień timer (15.0):

 

Nie mogłem tego znaleźć :kekw: dzieki !!! 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam jak mogę dodać do owego pluginu by HUD MESSAGE chodzi o to by na środku na samej górze ekranu wyświetlało się Gramy Bs A/B

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
6 godzin temu, gejmer napisał:

Witam jak mogę dodać do owego pluginu by HUD MESSAGE chodzi o to by na środku na samej górze ekranu wyświetlało się Gramy Bs A/B

domyślnie to jest w pluginie raz masz na czacie a raz w hudzie 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
5 godzin temu, gejmer napisał:

Tz bardziej mi chodzi o coś takiego 68747470733a2f2f757365722d696d616765732e
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

 

Do message() dodaj, np. (ten jest akurat na dole i cały zielony):

 

char message[60];
Format(message, sizeof(message), "WŁĄCZONY JEST BOMSITE: %s", BSAL);
SetHudTextParams(-1.0, 0.85, 120.0, 0, 255, 0, 140); 
ShowHudText(client, -1, message);

Tutaj masz nawet poradnik:

 

Edytowane przez Shazzy

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Shazzy Co tu źle zrobiłem? 

Spoiler

    CPrintToChatAll("Gramy Bombside {lightred}%s.",BSAL);
    PrintHintTextToAll("<font color='#FFF'>Tylko Bombsite <font color='#CA351B'>%s <font color='#FFF'>jest wlaczony w tej rundzie</font>",BSAL);
    char message[60];
    Format(message, sizeof(message), "Gramy Bombside %s", BSAL);
    SetHudTextParams(-1.0, 0.85, 120.0, 0, 255, 0, 140); 
    ShowHudText(client, -1, message);

 

 

hud.png

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
22 minuty temu, gejmer napisał:

@Shazzy Co tu źle zrobiłem? 

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

    CPrintToChatAll("Gramy Bombside {lightred}%s.",BSAL);
    PrintHintTextToAll("<font color='#FFF'>Tylko Bombsite <font color='#CA351B'>%s <font color='#FFF'>jest wlaczony w tej rundzie</font>",BSAL);
    char message[60];
    Format(message, sizeof(message), "Gramy Bombside %s", BSAL);
    SetHudTextParams(-1.0, 0.85, 120.0, 0, 255, 0, 140); 
    ShowHudText(client, -1, message);

 

 

hud.png

spróbuj może 

 

 

Cytat

CPrintToChatAll(client, "Gramy Bombside {lightred}%s.",BSAL);
    PrintHintTextToAll("<font color='#FFF'>Tylko Bombsite <font color='#CA351B'>%s <font color='#FFF'>jest wlaczony w tej rundzie</font>",BSAL);
    char message[60];
    Format(message, sizeof(message), "Gramy Bombside %s", BSAL);
    SetHudTextParams(-1.0, 0.85, 120.0, 0, 255, 0, 140); 
    ShowHudText(client, -1, message);

 

lub

 

Cytat

CPrintToChatAll(, "Gramy Bombside {lightred}%s.",BSAL);
    PrintHintTextToAll("<font color='#FFF'>Tylko Bombsite <font color='#CA351B'>%s <font color='#FFF'>jest wlaczony w tej rundzie</font>",BSAL);
    char message[60];
    Format(message, sizeof(message), "Gramy Bombside %s", BSAL);
    SetHudTextParams(-1.0, 0.85, 120.0, 0, 255, 0, 140); 
    ShowHudText( -1, message);


 

Edytowane przez LACOSTE

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
6 godzin temu, gejmer napisał:

Dalej taki sam problem 😕

 

 

x.png

 

Musisz przekazać do tej funkcji clienta

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

CPrintToChatAll(client, "Gramy Bombside {lightred}%s.",BSAL);
    PrintHintTextToAll("<font color='#FFF'>Tylko Bombsite <font color='#CA351B'>%s <font color='#FFF'>jest wlaczony w tej rundzie</font>",BSAL);
    char message[60];
    Format(message, sizeof(message), "Gramy Bombside %s", BSAL);
    SetHudTextParams(-1.0, 0.85, 120.0, 0, 255, 0, 140); 
    ShowHudText(i, -1, message);

 

spróbuj to

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...