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

[Rozwiązane] Szukam VIP'a z granatami od drugiej rundy

Recommended Posts

Potrzebuje vipa, który dostaje wszystkie granaty ( oprócz dickoya) od drugiej rundy
1000 $ na poczatku rundy 
350 $ za podlozenie paki i defa

Niestety w vipie Hanysa, jak i mehrsykiego nie ma mozliwosci granatow od drugiej rundy

By MAGNET,

Sama nazwa "szukam VIP'a" niewiele mówi - trzeba chociaż w podstawowym stopniu powiedzieć czym nasza prośba się wyróżnia. Poprawiłem temat :)

Share this post


Link to post
Share on other sites

Wygeneruj VIPa jakiego chcesz i przerobie kod, żeby dawał granaty od drugiej rundy ?

  • Lubię to! 1

Share this post


Link to post
Share on other sites
10 minut temu, MAGNET napisał:

Wygeneruj VIPa jakiego chcesz i przerobie kod, żeby dawał granaty od drugiej rundy ?

Spoiler

/*================ Aktualizacje ================

~ Wersja "0.1" >> Pierwsze wydanie pluginu.
~ Wersja "0.2" >> Przepisanie pluginy na nowy syntax.
~ Wersja "0.3" >> Poprawiono większość kodu, pieniądze za rozbrojenie oraz podłożenie bomby już działają.
~ Wersja "0.4" >> Dodano cvary.
~ Wersja "0.5" >> Dodano więcej cvarów oraz poprawiono kilka błędów.
~ Wersja "0.6" >> Naprawiono błąd który powodował że menu broni dla vip'a wyświetlało się przy starcie rundy jak się zmieniały drużyny, dodano więcej cvarów.
~ Wersja "0.7" >> Dodano pieniądze za wygranie rundy, poprawiono kod na zakończenie rundy.
~ Wersja "0.8" >> Dodano przywitanie/pożegnanie dla vip'a na czacie oraz w HINT BOX, dodano więcej cvarów oraz poprawiono kod. // USUNIĘTE
~ Wersja "0.9" >> Dodano tag [VIP] w cvarach.
~ Wersja "1.0" >> Zmieniono kolor wiadomości na czacie, dodano cvar dotyczący działaniu podwójnego skoku.
~ Wersja "1.1" >> Dodano nowy cvar oraz poprawiono kod na podwójny skok.
~ Wersja "1.2" >> Teraz granaty nie spadają na ziemie przy nowej rundzie.
~ Wersja "1.3" >> Dodano darmowego vip'a od do danej godziny.

TODO

~ Nothing now.

==============================================*/

/* << Includy >> */
#include <cstrike>
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <multicolors>

/* << Define >> */
#define PL_VERSION "1.3"

/* << Pragma >> */
#pragma newdecls required
#pragma semicolon 1

/* << ConVary >> */
ConVar g_cvVipHP;
ConVar g_cvVipHeadShotHP;
ConVar g_cvVipKillHP;
ConVar g_cvPredkoscGracza;
ConVar g_cvGrawitacja;
ConVar g_cvVipArmor;
ConVar g_cvVipHelm;
ConVar g_cvHEGranat;
ConVar g_cvFlashGranat;
ConVar g_cvSmokeGranat;
ConVar g_cvDecoyGranat;
ConVar g_cvHealGranat;
ConVar g_cvIncGranat;
ConVar g_cvMolotovGranat;
ConVar g_cvTaGranat;
ConVar g_cvVipPieniadzeNaStart;
ConVar g_cvVipPieniadzePodlozenie;
ConVar g_cvVipPieniadzeRozbrojenie;
ConVar g_cvVipHeadShotPieniadze;
ConVar g_cvVipKillPieniadze;
ConVar g_cvVipWygranaPieniadze;
ConVar g_cvTag_Tabela;
ConVar g_cvVipTag_Tabela;
ConVar g_cvDoubleJump;
ConVar g_cvMenu_Broni;
ConVar g_cvRunda_MenuBroni;
ConVar g_cvDarmowy_Vip;
ConVar g_cvVipOdGodziny;
ConVar g_cvVipDoGodziny;

/* << Inty >> */
int RoundCount = 0;
int FreeVip = 0;
int g_iaGrenadeOffsets[] =  { 15, 17, 16, 14, 18, 17 };


/* << Informacje o pluginie >> */
public Plugin myinfo =
{
    name = "[CS:GO] How2Kill - VIP",
    author = "Mesharsky",
    description = "[CS:GO] Vip na serwery CSGO",
    version = PL_VERSION,
    url = "http://steamcommunity.com/id/MesharskyH2K"
}

public void OnPluginStart()
{
    HookEvent("round_start", Event_RoundStart);
    HookEvent("player_spawn", Event_TagTable);
    HookEvent("player_spawn", Event_PlayerSpawn);
    HookEvent("player_death", Event_PlayerDeath);
    HookEvent("bomb_planted", Event_BombPlanted);
    HookEvent("bomb_defused", Event_BombDefused);
    HookEvent("round_end", Event_RoundEnd);
    HookEvent("announce_phase_end", ResetPoZmianie);
    HookEvent("cs_intermission", ResetPoZmianie);

    /* << ConVary >> */
    g_cvVipHP = CreateConVar("zycie_vip", "100", "Ile zdrowia ma posiadać vip na start rundy?");
    g_cvVipKillHP = CreateConVar("kill_hp_vip", "0", "Ile zdrowia ma dostawać vip za zabicie gracza?");
    g_cvVipHeadShotHP = CreateConVar("hs_hp_vip", "0", "Ile zdrowia ma dostawać vip za zabójstwo z HeadShot'a");
    g_cvPredkoscGracza = CreateConVar("vip_predkosc_ruchu", "1.0", "Prędkość ruchu vip'a (1.0 - standardowo)");
    g_cvGrawitacja = CreateConVar("vip_grawitacja", "1.0", "Grawitacja dla vip'a (1.0 - standardowo)");
    g_cvVipArmor = CreateConVar("armor_vip", "1", "Punkty kamizelki dla vipa? (od 1 - 100)");
    g_cvVipHelm = CreateConVar("helm_vip", "0", "Czy vip ma posiadać darmowy hełm? (0/1)");
    g_cvVipPieniadzeNaStart = CreateConVar("vip_dodatkowy_Pieniadze", "200", "Ilość dodatkowego Pieniadzeu na start rundy jaki ma vip dostawać.");
    g_cvVipKillPieniadze = CreateConVar("Pieniadze_kill_vip", "0", "Ile vip ma dostawać pieniędzy za zabójstwo ?");
    g_cvVipHeadShotPieniadze = CreateConVar("Pieniadze_hs_vip", "0", "Ile vip ma dostawać pieniędzy za zabójstwo w głowę?");
    g_cvVipPieniadzePodlozenie = CreateConVar("Pieniadze_podlozenie_vip", "150", "Ile pieniędzy ma dostawać vip za podłożenie bomby?");
    g_cvVipPieniadzeRozbrojenie = CreateConVar("Pieniadze_rozbrojenie_vip", "150", "Ile pieniędzy ma dostawać vip za rozbrojenie bomby?");
    g_cvVipWygranaPieniadze = CreateConVar("Pieniadze_wygranie_rundy", "0", "Ile pieniędzy ma dostawać vip za wygranie rundy?");
    g_cvHEGranat = CreateConVar("vip_he", "0", "Czy vip ma dostawać granat HE na start rundy?");
    g_cvFlashGranat = CreateConVar("vip_flash", "0", "Czy vip ma dostawać granat Flash na start rundy?");
    g_cvSmokeGranat = CreateConVar("vip_smoke", "0", "Czy vip ma dostawać granat Smoke na start rundy?");
    g_cvDecoyGranat = CreateConVar("vip_decoy", "0", "Czy vip ma dostawać granat Decoy na start rundy?");
    g_cvHealGranat = CreateConVar("vip_heal", "0", "Czy vip ma dostawać granat Leczący na start rundy?");
    g_cvIncGranat = CreateConVar("vip_inc", "0", "Czy vip ma dostawać granat Podpalający (CT) na start rundy?");
    g_cvMolotovGranat = CreateConVar("vip_molotov", "0", "Czy vip ma dostawać granat Podpalający (TT) na start rundy?");
    g_cvTaGranat = CreateConVar("vip_tactic", "0", "Czy vip ma dostawać granat Taktyczny na start rundy?");
    g_cvTag_Tabela = CreateConVar("vip_tag", "0", "Czy w tabeli ma widniec tag dla vip'a?");
    g_cvVipTag_Tabela = CreateConVar("sm_clantag", "[VIP]", "Jaki tag w tabeli ma posiadać VIP?");
    g_cvDoubleJump = CreateConVar("double_jump", "0", "Czy vip ma posiadać podwójny skok?");
    g_cvMenu_Broni = CreateConVar("vip_menu_broni", "0", "Czy ma być menu broni dla vip'a?");
    g_cvRunda_MenuBroni = CreateConVar("vip_runda_menubroni", "3", "Od ktorej rundy ma pokazywac menu broni dla vip'a?");
    g_cvDarmowy_Vip = CreateConVar("vip_od_danej_godzint", "0", "Czy ma być włączony VIP dla graczy w nocy od x do x godziny?");
    g_cvVipOdGodziny = CreateConVar("vip_od_godziny", "24", "Od ktorej godziny ma byc darmowy vip?");
    g_cvVipDoGodziny = CreateConVar("vip_do_godziny", "6", "Do ktorej godziny ma byc darmowy vip?");


}

public void OnMapStart()
{
    AutoExecConfig(true, "Konfiguracja_Vipa");
    RoundCount = 0;
}

public Action MenuGlowne(int client)
{
    if (IsValidClient(client)) {
        if (IsPlayerVIP(client)) {
            Menu menu = new Menu(MenuHandler1);
            menu.SetTitle("VIP : Wybierz Broń");
            menu.AddItem("weapon_ak47", "AK-47");
            menu.AddItem("weapon_m4a1", "M4A4");
            menu.AddItem("weapon_m4a1_silencer", "M4A1-S");
            menu.AddItem("weapon_awp", "AWP");
            menu.AddItem("weapon_ssg08", "SCOUT");
            menu.AddItem("weapon_xm1014", "XM1014");
            menu.AddItem("weapon_famas", "FAMAS");
            menu.ExitButton = true;
            menu.Display(client, 15);
        }
    }
}

public int MenuHandler1(Menu menu, MenuAction action, int client, int itemNum)
{
    if (action == MenuAction_Select)
    {
        char info[32];
        GetMenuItem(menu, itemNum, info, sizeof(info));

        if (IsPlayerAlive(client))
        {
            StripAllWeapons(client);
            GivePlayerItem(client, "weapon_knife");
            GivePlayerItem(client, info);
            MenuBroni(client);
        }
    }

    else if (action == MenuAction_End) {
        CloseHandle(menu);
    }
}

public Action MenuBroni(int client)
{
    if (IsValidClient(client)) {
        if (IsPlayerVIP(client)) {
            Menu menusec = new Menu(MenuHandler2);
            menusec.SetTitle("VIP : Wybierz Pistolet");
            menusec.AddItem("weapon_deagle", "Deagle");
            menusec.AddItem("weapon_revolver", "R8 Revolver");
            menusec.AddItem("weapon_fiveseven", "Five-Seven");
            menusec.AddItem("weapon_tec9", "Tec-9");
            menusec.AddItem("weapon_cz75a", "CZ7a");
            menusec.AddItem("weapon_elite", "Dual Elites");
            menusec.AddItem("weapon_p250", "p250");
            menusec.ExitButton = true;
            menusec.Display(client, 15);
        }
    }
}

public int MenuHandler2(Menu menusec, MenuAction action, int client, int itemNum)
{

    if (action == MenuAction_Select)
    {
        char info[32];
        GetMenuItem(menusec, itemNum, info, sizeof(info));

        if (IsPlayerAlive(client)) {
            GivePlayerItem(client, info);
        }
    }

    else if (action == MenuAction_End) {
        CloseHandle(menusec);
    }
}

public Action Event_RoundStart(Handle hEvent, const char[] chName, bool bDontBroadcast)
{
    if (GetConVarBool(g_cvDarmowy_Vip))
    {
        int od_godziny = GetConVarInt(g_cvVipOdGodziny);
        int do_godziny = GetConVarInt(g_cvVipDoGodziny);
        if(od_godziny || do_godziny)
        {
            char godzina_str[8];
            FormatTime(godzina_str, sizeof(godzina_str), "%H", GetTime());
            int godzina = StringToInt(godzina_str);
            if(od_godziny > do_godziny)
                FreeVip = (godzina >= od_godziny || godzina < do_godziny)? 1: 0;
            else
                FreeVip = (godzina >= od_godziny && godzina < do_godziny)? 1: 0;
        }
        else
            FreeVip = 0;
    }

    if (GameRules_GetProp("m_bWarmupPeriod") != 1)
        RoundCount = RoundCount + 1;
}

public Action ResetPoZmianie(Handle hEvent, const char[] chName, bool bDontBroadcast)
{
    RoundCount = 0;
}

public Action Event_PlayerSpawn(Handle hEvent, const char[] chName, bool bDontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(hEvent, "userid"));

    if (GameRules_GetProp("m_bWarmupPeriod") == 1)
        return;

    if (IsPlayerVIP(client))
    {
        SetEntityHealth(client, GetConVarInt(g_cvVipHP));
        SetEntProp(client, Prop_Send, "m_ArmorValue", GetConVarInt(g_cvVipArmor));
        SetEntProp(client, Prop_Send, "m_bHasHelmet", GetConVarInt(g_cvVipHelm));
        SetEntProp(client, Prop_Send, "m_iAccount", GetEntProp(client, Prop_Send, "m_iAccount") + GetConVarInt(g_cvVipPieniadzeNaStart));
        SetEntPropFloat(client, Prop_Send, "m_flLaggedMovementValue", GetConVarFloat(g_cvPredkoscGracza));
        SetEntityGravity(client, GetConVarFloat(g_cvGrawitacja));
        if (GetClientTeam(client) == CS_TEAM_CT && GetEntProp(client, Prop_Send, "m_bHasDefuser") == 0)GivePlayerItem(client, "item_defuser");
        if (GetConVarBool(g_cvHEGranat))GivePlayerItem(client, "weapon_hegrenade");
        if (GetConVarBool(g_cvFlashGranat))GivePlayerItem(client, "weapon_flashbang");
        if (GetConVarBool(g_cvSmokeGranat))GivePlayerItem(client, "weapon_smokegrenade");
        if (GetConVarBool(g_cvDecoyGranat))GivePlayerItem(client, "weapon_decoy");
        if (GetConVarBool(g_cvHealGranat))GivePlayerItem(client, "weapon_healthshot");
        if (GetConVarBool(g_cvIncGranat))GivePlayerItem(client, "weapon_incgrenade");
        if (GetConVarBool(g_cvMolotovGranat))GivePlayerItem(client, "weapon_molotov");
        if (GetConVarBool(g_cvTaGranat))GivePlayerItem(client, "weapon_tagrenade");
    }

    { if (RoundCount >= GetConVarInt(g_cvRunda_MenuBroni))
        {
            if (GetConVarBool(g_cvMenu_Broni))MenuGlowne(client);
        }
    }
}

public Action Event_PlayerDeath(Handle hEvent, const char[] chName, bool bDontBroadcast)
{
    int attacker = GetClientOfUserId(GetEventInt(hEvent, "attacker"));
    int victim = GetClientOfUserId(GetEventInt(hEvent, "userid"));

    if (IsPlayerVIP(attacker))
    {
        if (!IsValidClient(attacker)) {
            return;
        }

        if (GetClientTeam(attacker) != GetClientTeam(victim))
        {
            bool headshot = GetEventBool(hEvent, "headshot");
            int PieniadzeGracza = GetEntProp(attacker, Prop_Send, "m_iAccount");
            int HP = GetClientHealth(attacker);

            if (headshot) {
                SetEntProp(attacker, Prop_Send, "m_iAccount", GetConVarInt(g_cvVipHeadShotPieniadze) + PieniadzeGracza);
                if (HP + GetConVarInt(g_cvVipHeadShotHP) > 150)SetEntityHealth(attacker, 150);
                if (HP + GetConVarInt(g_cvVipHeadShotHP) <= 150)SetEntityHealth(attacker, HP + GetConVarInt(g_cvVipHeadShotHP));
            }
            else {
                SetEntProp(attacker, Prop_Send, "m_iAccount", GetConVarInt(g_cvVipKillPieniadze) + PieniadzeGracza);
                if (HP + GetConVarInt(g_cvVipKillHP) > 150)SetEntityHealth(attacker, 150);
                if (HP + GetConVarInt(g_cvVipKillHP) <= 150)SetEntityHealth(attacker, HP + GetConVarInt(g_cvVipKillHP));
            }
        }
    }
}

public Action Event_BombPlanted(Handle hEvent, const char[] chName, bool bDontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(hEvent, "userid"));
    int PieniadzeGracza = GetEntProp(client, Prop_Send, "m_iAccount");

    if (IsPlayerVIP(client)) {

        SetEntProp(client, Prop_Send, "m_iAccount", GetConVarInt(g_cvVipPieniadzePodlozenie) + PieniadzeGracza);
    }
}

public Action Event_BombDefused(Handle hEvent, const char[] chName, bool bDontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(hEvent, "userid"));
    int PieniadzeGracza = GetEntProp(client, Prop_Send, "m_iAccount");

    if (IsPlayerVIP(client)) {
        SetEntProp(client, Prop_Send, "m_iAccount", GetConVarInt(g_cvVipPieniadzeRozbrojenie) + PieniadzeGracza);
    }
}

public Action Event_RoundEnd(Handle hEvent, const char[] chName, bool bDontBroadcast)
{
    int winnerTeam = GetEventInt(hEvent, "winner");

    for (int client = 1; client < MAXPLAYERS + 1; client++)
    {
        if (IsPlayerVIP(client) && IsValidClient(client))
        {
            RemoveNades(client);

            if (GetClientTeam(client) == winnerTeam)
            {
                SetEntProp(client, Prop_Send, "m_iAccount", GetConVarInt(g_cvVipWygranaPieniadze) + GetEntProp(client, Prop_Send, "m_iAccount"));
            }
        }
    }
}

public Action Event_TagTable(Event event, const char[] chName, bool bDontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));

    char TagTabela[128];
    g_cvVipTag_Tabela.GetString(TagTabela, sizeof(TagTabela));

    if (IsPlayerVIP(client))
    {
        if (GetConVarBool(g_cvTag_Tabela))CS_SetClientClanTag(client, TagTabela);
    }
}

public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon)
{
    if (!g_cvDoubleJump.BoolValue)
        return Plugin_Handled;

    if (IsPlayerVIP(client) && IsPlayerAlive(client))
    {
        static int g_fLastButtons[MAXPLAYERS + 1], g_fLastFlags[MAXPLAYERS + 1], g_iJumps[MAXPLAYERS + 1], fCurFlags, fCurButtons;
        fCurFlags = GetEntityFlags(client);
        fCurButtons = GetClientButtons(client);
        if (g_fLastFlags[client] & FL_ONGROUND && !(fCurFlags & FL_ONGROUND) && !(g_fLastButtons[client] & IN_JUMP) && fCurButtons & IN_JUMP)g_iJumps[client]++;
        else if (fCurFlags & FL_ONGROUND)g_iJumps[client] = 0;
        else if (!(g_fLastButtons[client] & IN_JUMP) && fCurButtons & IN_JUMP && g_iJumps[client] == 1)
        {
            g_iJumps[client]++;
            float vVel[3];
            GetEntPropVector(client, Prop_Data, "m_vecVelocity", vVel);
            vVel[2] = 250.0;
            TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, vVel);
        }

        g_fLastFlags[client] = fCurFlags;
        g_fLastButtons[client] = fCurButtons;
    }
    return Plugin_Continue;
}

stock void StripAllWeapons(int client)
{
    int iEnt;
    for (int i = 0; i <= 2; i++)
    {
        while ((iEnt = GetPlayerWeaponSlot(client, i)) != -1)
        {
            RemovePlayerItem(client, iEnt);
            AcceptEntityInput(iEnt, "Kill");
        }
    }
}

stock void RemoveNades(int client)
{
    while (RemoveWeaponBySlot(client, 3)) {  }
    for (int i = 0; i < 6; i++)
    SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, g_iaGrenadeOffsets);
}

stock bool RemoveWeaponBySlot(int client, int iSlot)
{
    int iEntity = GetPlayerWeaponSlot(client, iSlot);
    if (IsValidEdict(iEntity)) {
        RemovePlayerItem(client, iEntity);
        AcceptEntityInput(iEntity, "Kill");
        return true;
    }
    return false;
}

bool IsPlayerVIP(int client)
{
    if (CheckCommandAccess(client, "sm_Vip", 0, true) || FreeVip)
        return true;

    return false;
}

bool IsValidClient(int client)
{
    if (client <= 0 || client > MaxClients) {
        return false;
    }

    if (!IsClientInGame(client)) {
        return false;
    }

    if (IsFakeClient(client)) {
        return false;
    }

    return true;
}

//Generated by using panel on following website: http://cs-plugin.com/vip-generator_m.php
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Tylko problem jest taki, ze nawet czysty vip z generatora, o np ten nie działa mi na serwerze, a dokładnie po wgraniu go na serwer, kiedy jakiś gracz wejdzie na serwer respi się w dowolnym miejscu zbugowany w powietrzu i nie może się ruszać, więc wolałbym, żebyś przerobił vipa, np Hanysa ?

Spoiler

#include <sourcemod>
#include <sdktools>
#include <cstrike>
#include <clientprefs>
#include <colors>
#include <loghelper>
#include <sdkhooks>

#pragma semicolon 1

#define MAX_WEAPON_COUNT 32
#define SHOW_MENU -1
#define CS_TEAM_SPECTATOR    1
#define CS_TEAM_T             2
#define CS_TEAM_CT            3

public Plugin:myinfo =
{
    name = "VIP Plugin by Hanys",
    author = "Hanys",
    description = "vip plugin by Hanys",
    version = "1.3.1",
    url = "http://hanys.dispark.pl"
};

new Handle:HP;
new Handle:Gravity;
new Handle:Speedy;
new Handle:Smokegrenade;
new Handle:Flashbang;
new Handle:Hegrenade;
new Handle:Molotov;
new Handle:Decoy;
new Handle:Tagrenade;
new Handle:Healthshot;
new Handle:Remove_grenade;
new Handle:Armorvalue;
new Handle:Bhashelmet;
new Handle:Defuser;
new Handle:Moneystart;
new Handle:Bombplanted;
new Handle:Bombdefused;
new Handle:Headshot_money;
new Handle:Headshot_hp;
new Handle:Kill_money;
new Handle:Kill_hp;
new Handle:Tagtable;
new Handle:Tagsay;
new Handle:Double_jump;
new Handle:Advertising;
new Handle:Menu_round;
new Handle:Menu_command;
new Handle:Menu_onspawn;

new g_PrimaryGunCount;
new g_SecondaryGunCount;
new String:g_PrimaryGuns[MAX_WEAPON_COUNT][32];
new String:g_SecondaryGuns[MAX_WEAPON_COUNT][32];
new bool:g_MenuOpen[MAXPLAYERS+1] = {false, ...};
new Handle:g_PrimaryMenu = INVALID_HANDLE;
new Handle:g_SecondaryMenu = INVALID_HANDLE;
new g_PlayerPrimary[MAXPLAYERS+1] = {-1, ...};
new g_PlayerSecondary[MAXPLAYERS+1] = {-1, ...};
new Rounds = 0;
new const g_iaGrenadeOffsets[] = {15, 17, 16, 14, 18, 17};

public OnPluginStart()
{
    CreateConVar("sm_vip_version", "1.3.2", "VIP Plugin by Hanys", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_DONTRECORD);
    
    HP = CreateConVar("vip_hp_start", "100", "Ilosc HP na start rundy", FCVAR_NOTIFY);
    Gravity = CreateConVar("vip_gravity", "1.0", "Grawitacja (1.0 - standardowa)", FCVAR_PLUGIN);
    Speedy = CreateConVar("vip_speed", "1.0", "Szybkosc biegania (1.0 - standardowo)", FCVAR_PLUGIN);
    Smokegrenade = CreateConVar("vip_grenade_smokegrenade", "0", "Smoke na start rundy", FCVAR_NONE, true, 0.0, true, 1.0);
    Flashbang = CreateConVar("vip_grenade_flashbang", "0", "Flash na start rundy (0-2))", FCVAR_NOTIFY);
    Hegrenade = CreateConVar("vip_grenade_hegrenade", "0", "Granat na start rundy", FCVAR_NONE, true, 0.0, true, 1.0);
    Molotov = CreateConVar("vip_grenade_molotov", "0", "Molotov dla tt lub Incendiary dla ct na start rundy",FCVAR_NONE, true, 0.0, true, 1.0);
    Decoy = CreateConVar("vip_grenade_decoy", "0", "Decoy na start rundy", FCVAR_NONE, true, 0.0, true, 1.0);
    Tagrenade = CreateConVar("vip_grenade_tagrenade", "0", "Granat taktyczny na start rundy",FCVAR_NONE, true, 0.0, true, 1.0);
    Healthshot = CreateConVar("vip_grenade_healtshot", "0", "Apteczka na start rundy (0-4)", FCVAR_NOTIFY);
    Remove_grenade = CreateConVar("vip_grenade_remove", "0", "Na początku rundy/respawn usuwa wszystkie granaty (Przydatne przy wypadaniu granatów", FCVAR_NONE, true, 0.0, true, 1.0);
    Armorvalue = CreateConVar("vip_armorvalue", "0", "Kamizelka na start rundy", FCVAR_NONE, true, 0.0, true, 1.0);
    Bhashelmet = CreateConVar("vip_bhashelmet", "0", "Kask na start rundy", FCVAR_NONE, true, 0.0, true, 1.0);
    Defuser = CreateConVar("vip_defuser", "0", "Zestaw do rozbrajania dla CT na start rundy", FCVAR_NONE, true, 0.0, true, 1.0);
    Moneystart = CreateConVar("vip_money_start", "0", "Ilosc $ na start rundy", FCVAR_NOTIFY);
    Bombplanted = CreateConVar("vip_bomb_planted", "0", "Ilosc $ za podlozenie bomby", FCVAR_NOTIFY);
    Bombdefused = CreateConVar("vip_bomb_defused", "0", "Ilosc $ za rozbrojenie bomby", FCVAR_NOTIFY);
    Headshot_money = CreateConVar("vip_headshot_money", "0", "Ilosc $ za Headshot", FCVAR_NOTIFY);
    Headshot_hp = CreateConVar("vip_headshot_hp", "0", "Ilosc HP za Headshot", FCVAR_NOTIFY);
    Kill_money = CreateConVar("vip_kill_money", "0", "Ilosc $ za fraga", FCVAR_NOTIFY);
    Kill_hp = CreateConVar("vip_kill_hp", "0", "Ilosc HP za fraga", FCVAR_NOTIFY);
    Tagtable = CreateConVar("vip_tag_table", "0", "Tag VIP w tabeli wynikow", FCVAR_NONE, true, 0.0, true, 1.0);
    Tagsay = CreateConVar("vip_tag_say", "0", "Tag VIP + kolorowy nick w say", FCVAR_NONE, true, 0.0, true, 1.0);
    Double_jump = CreateConVar("vip_double_jump", "0", "Podwojny skok", FCVAR_NONE, true, 0.0, true, 1.0);
    Advertising = CreateConVar("vip_advertising", "1", "Informacja o autorze pluginu", FCVAR_NONE, true, 0.0, true, 1.0);
    Menu_round = CreateConVar("vip_menu", "0", "Od ktorej rundy menu broni jest aktywne (0-menu broni nieaktywne)", FCVAR_NOTIFY);
    Menu_command = CreateConVar("vip_menu_command", "0", "Otwieranie menu broni po wpisaniu !bronie/!menu", FCVAR_NONE, true, 0.0, true, 1.0);
    Menu_onspawn = CreateConVar("vip_menu_onspawn", "0", "Wyswietlanie menu przy respawn (Start rundy)", FCVAR_NONE, true, 0.0, true, 1.0);

    AutoExecConfig(true, "vip_hanys");
    CheckConfig("configs/vip_hanys_weapons.ini");
    
    RegConsoleCmd("say", Command_SendToAll);
    //RegConsoleCmd("say_team", Command_SendToTeam);
    RegConsoleCmd("sm_menu", Command_VipMenu);
    RegConsoleCmd("sm_bronie", Command_VipMenu);
    
    HookEvent("player_spawn", Event_OnPlayerSpawn);
    HookEvent("bomb_planted", Event_BombPlanted);
    HookEvent("bomb_defused", Event_BombDefused);
    HookEvent("player_death",  Event_PlayerDeath);
    HookEvent("player_team", Event_TagTable);
    HookEvent("player_spawn", Event_TagTable);
    HookEvent("round_start", Event_RoundStart);
    HookEvent("announce_phase_end", RestartRound);
    HookEvent("cs_intermission", RestartRound);
    
    CreateTimer(300.0, Timer_Advert, _, TIMER_REPEAT);
}

public OnPluginEnd()
{
    CancelMenu(g_PrimaryMenu);
    CheckCloseHandle(g_PrimaryMenu);
    CancelMenu(g_SecondaryMenu);
    CheckCloseHandle(g_SecondaryMenu);
}


public Action:Timer_Advert(Handle:timer)
{
    if (GetConVarBool(Advertising))
    {
    PrintToChatAll("\x01[\x04VIP\x01]\x04 Plugin VIP by Hanys");
    }
}

public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    new money = GetEntProp(client, Prop_Send, "m_iAccount");
    new team = GetClientTeam(client);
    new g_HP = GetConVarInt(HP);
    new g_moneystart = GetConVarInt(Moneystart);
    new g_Flashbang = GetConVarInt(Flashbang);
    new g_Healthshot = GetConVarInt(Healthshot);
    
    if (client > 0 && IsPlayerAlive(client))
    {
        if (GetConVarBool(Remove_grenade)) StripNades(client);
        if (IsPlayerGenericAdmin(client))

        {
            SetEntityHealth(client, g_HP); //hp
            SetEntityGravity(client, GetConVarFloat(Gravity)); //grawitacja
            SetEntPropFloat(client, Prop_Send, "m_flLaggedMovementValue", GetConVarFloat(Speedy)); //predkosc biegania
            if (GetConVarBool(Smokegrenade)) GivePlayerItem(client, "weapon_smokegrenade"); //smoke
            if (GetConVarBool(Flashbang))
            {
                for (new i = 1; i <= g_Flashbang; i++)
                GivePlayerItem(client, "weapon_flashbang");
            }
            if (GetConVarBool(Healthshot))
            {
                for (new i = 1; i <= g_Healthshot; i++)
                GivePlayerItem(client, "weapon_healthshot");
            }
            if (GetConVarBool(Hegrenade)) GivePlayerItem(client, "weapon_hegrenade"); //grenade
            if (GetConVarBool(Molotov) && team == CS_TEAM_T) GivePlayerItem(client, "weapon_molotov"); //molotov tt
            if (GetConVarBool(Molotov) && team == CS_TEAM_CT) GivePlayerItem(client, "weapon_incgrenade"); //Incendiary ct
            if (GetConVarBool(Decoy)) GivePlayerItem(client, "weapon_decoy"); //decoy
            if (GetConVarBool(Tagrenade)) GivePlayerItem(client, "weapon_tagrenade"); //Taktyczny
            SetEntProp(client, Prop_Send, "m_iAccount", money + g_moneystart); // plus $ na start
            if (GetConVarBool(Armorvalue)) SetEntProp(client, Prop_Send, "m_ArmorValue", 100); //kamizelka
            if (GetConVarBool(Bhashelmet)) SetEntProp(client, Prop_Send, "m_bHasHelmet", 1); //helm
            
            if(team == CS_TEAM_CT)
            {
                if (GetConVarBool(Defuser) && GetEntProp(client, Prop_Send, "m_bHasDefuser") == 0) GivePlayerItem(client, "item_defuser"); //kombinerki
    
            }
            CreateTimer(0.1, Event_HandleSpawn, GetEventInt(event, "userid"));
        }
    
    }
}
 
stock StripNades(client)
{
    while(RemoveWeaponBySlot(client, 3)){}
    for(new i = 0; i < 6; i++)
    SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, g_iaGrenadeOffsets);
}
stock bool:RemoveWeaponBySlot(client, iSlot)
{
    new iEntity = GetPlayerWeaponSlot(client, iSlot);
    if(IsValidEdict(iEntity)) {
        RemovePlayerItem(client, iEntity);
        AcceptEntityInput(iEntity, "Kill");
        return true;
    }
    return false;


public Event_BombPlanted(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    new money = GetEntProp(client, Prop_Send, "m_iAccount");
    new g_bombplanted = GetConVarInt(Bombplanted);
    
    if (IsPlayerGenericAdmin(client))
    
    
    {
        SetEntProp(client, Prop_Send, "m_iAccount", money + g_bombplanted);//plus $ for Bomb Planted
        
        
    }
}

public Event_BombDefused(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    new money = GetEntProp(client, Prop_Send, "m_iAccount");
    new g_bombdefused = GetConVarInt(Bombdefused);
    
    if (IsPlayerGenericAdmin(client))
    
    
    {
        SetEntProp(client, Prop_Send, "m_iAccount", money + g_bombdefused); //plus $ for Bomb Defused
        
        
    }
}

public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
    new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
    new money = GetEntProp(attacker, Prop_Send, "m_iAccount");
    new health = GetEntProp(attacker, Prop_Send, "m_iHealth");
    new g_headshot_money = GetConVarInt(Headshot_money);
    new g_headshot_hp = GetConVarInt(Headshot_hp);
    new g_kill_money = GetConVarInt(Kill_money);
    new g_kill_hp = GetConVarInt(Kill_hp);
    
    new bool:headshot = GetEventBool(event, "headshot");
    if (IsPlayerGenericAdmin(attacker))
    
    
    {
        if(headshot)
        
        {
            SetEntProp(attacker, Prop_Send, "m_iAccount", money + g_headshot_money); //plus for hs
            SetEntProp(attacker, Prop_Send, "m_iHealth", health + g_headshot_hp); //plus hp for hs
            
            
        }
        else
        
        {
            SetEntProp(attacker, Prop_Send, "m_iAccount", money + g_kill_money); //plus for kill
            SetEntProp(attacker, Prop_Send, "m_iHealth", health + g_kill_hp); //plus hp for kill
            
            
        }
        
        
    }
}

public Action:Event_TagTable(Handle:event, String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    if (IsPlayerGenericAdmin(client))
    
    
    {
        if (GetConVarBool(Tagtable)) CS_SetClientClanTag(client, "[VIP]");
        
        
    }
}

public Action:Command_SendToAll(client, args)
{
    if ((IsPlayerGenericAdmin(client)) && GetConVarBool(Tagsay))
    {
        new String:text[256];
        GetCmdArg(1, text, sizeof(text));
        
        if (text[0] == '/' || text[0] == '@' || text[0] == '!' || text[0] == 0 || IsChatTrigger())
        {
            return Plugin_Handled;
        }
        if(IsPlayerAlive(client) && GetClientTeam(client) != 1)
        {
        PrintToChatAll("\x01[\x04VIP\x01]\x05 %N: \x01%s", client, text);
        }
        else if(!IsPlayerAlive(client) && GetClientTeam(client) != 1)
        {
        PrintToChatAll("\x01*NIE ZYJE* [\x04VIP\x01]\x05 %N: \x01%s", client, text);
        }
        else if(!IsPlayerAlive(client) && GetClientTeam(client) == 1)
        {
        PrintToChatAll("\x01*OBSERWATOR* [\x04VIP\x01]\x05 %N: \x01%s", client, text);
        }
        return Plugin_Handled;
    }
    return Plugin_Continue;
}

public Action:Command_SendToTeam(client, args)
{
    if ((IsPlayerGenericAdmin(client)) && GetConVarBool(Tagsay))
    {
        new String:text[256];
        GetCmdArg(1, text, sizeof(text));
        
        if (text[0] == '/' || text[0] == '@' || text[0] == '!' || text[0] == 0 || IsChatTrigger())
        {
            return Plugin_Handled;
        }
        for (new i = 1; i <= MaxClients; i++)
        {
            if (IsClientInGame(i) && IsClientConnected(i))
            {
                if (GetClientTeam(client) == GetClientTeam(i))
                {
                    if(GetClientTeam(client) == 2)
                    {
                        if(IsPlayerAlive(client))
                        {
                            PrintToChat(i, "\x01(Terrorysta) [\x04VIP\x01]\x05 %N \x01%s", client, text);
                        }
                        else if(!IsPlayerAlive(client))
                        {
                            PrintToChat(i, "\x01*NIE ZYJE*(Terrorysta) [\x04VIP\x01]\x05 %N \x01%s", client, text);
                        }
                        return Plugin_Handled;
                    }
                    else if(GetClientTeam(client) == 3)
                    {
                        if(IsPlayerAlive(client))
                        {
                        PrintToChat(i, "\x01(Antyterrorysta) [\x04VIP\x01]\x05 %N \x01%s", client, text);
                        }
                        else if(!IsPlayerAlive(client))
                        {
                        PrintToChat(i, "\x01*NIE ZYJE*(Antyterrorysta) [\x04VIP\x01]\x05 %N \x01%s", client, text);
                        }
                        return Plugin_Handled;
                    }
                    else if(GetClientTeam(client) == 1)
                    {
                        PrintToChat(i, "\x01[OBSERWATOR] [\x04VIP\x01]\x05 %N \x01%s", client, text);
                        return Plugin_Handled;
                    }
                }
            }
        }
    }
    return Plugin_Continue;
}

public Action:OnPlayerRunCmd(iClient, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
{
    if ((IsPlayerGenericAdmin(iClient)) && IsPlayerAlive(iClient) && GetConVarBool(Double_jump))
    
    
    {
        static g_fLastButtons[MAXPLAYERS+1], g_fLastFlags[MAXPLAYERS+1], g_iJumps[MAXPLAYERS+1], fCurFlags, fCurButtons;
        fCurFlags = GetEntityFlags(iClient);
        fCurButtons = GetClientButtons(iClient);
        if (g_fLastFlags[iClient] & FL_ONGROUND && !(fCurFlags & FL_ONGROUND) && !(g_fLastButtons[iClient] & IN_JUMP) && fCurButtons & IN_JUMP) g_iJumps[iClient]++;
        else if(fCurFlags & FL_ONGROUND) g_iJumps[iClient] = 0;
        else if(!(g_fLastButtons[iClient] & IN_JUMP) && fCurButtons & IN_JUMP && g_iJumps[iClient] == 1)
        
        
        {
            g_iJumps[iClient]++;
            decl Float:vVel[3];
            GetEntPropVector(iClient, Prop_Data, "m_vecVelocity", vVel);
            vVel[2] = 250.0;
            TeleportEntity(iClient, NULL_VECTOR, NULL_VECTOR, vVel);
            
            
        }
        
        g_fLastFlags[iClient] = fCurFlags;
        g_fLastButtons[iClient] = fCurButtons;
        
        
    }
    return Plugin_Continue;
}

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    Rounds = Rounds + 1;
}

public Action:RestartRound(Handle:event, const String:name[], bool:dontBroadcast)
{
    Rounds = 0;
}

public OnClientPutInServer(client)
{
    g_MenuOpen[client]=false;

    g_PlayerPrimary[client] = SHOW_MENU;
    g_PlayerSecondary[client] = SHOW_MENU;
}

public Event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    new team = GetClientTeam(client);

    if (g_MenuOpen[client] && team == CS_TEAM_SPECTATOR)
    {
        CancelClientMenu(client);        // Delayed
        g_MenuOpen[client] = false;
    }
}

stock CheckConfig(const String:ini_file[])
{
    decl String:file[PLATFORM_MAX_PATH];
    BuildPath(Path_SM, file, sizeof(file), ini_file);

    new timestamp = GetFileTime(file, FileTime_LastChange);

    if (timestamp == -1) SetFailState("\nCould not stat config file: %s.", file);

    InitializeMenus();
    if (ParseConfigFile(file))
    {
        FinalizeMenus();
    }
    
}

stock InitializeMenus()
{
    g_PrimaryGunCount=0;
    CheckCloseHandle(g_PrimaryMenu);
    g_PrimaryMenu = CreateMenu(MenuHandler_ChoosePrimary, MenuAction_Display|MenuAction_Select|MenuAction_Cancel);
    SetMenuTitle(g_PrimaryMenu, "[VIP] Wybierz darmowa bron:");

    g_SecondaryGunCount=0;
    CheckCloseHandle(g_SecondaryMenu);
    g_SecondaryMenu = CreateMenu(MenuHandler_ChooseSecondary, MenuAction_Display|MenuAction_Select|MenuAction_Cancel);
    SetMenuTitle(g_SecondaryMenu, "[VIP] Wybierz darmowa bron:");
}

stock FinalizeMenus()
{
    AddMenuItem(g_PrimaryMenu, "FF", "None");
    AddMenuItem(g_SecondaryMenu, "FF", "None");
}

bool:ParseConfigFile(const String:file[]) {

    new Handle:parser = SMC_CreateParser();
    SMC_SetReaders(parser, Config_NewSection, Config_UnknownKeyValue, Config_EndSection);
    SMC_SetParseEnd(parser, Config_End);

    new line = 0;
    new col = 0;
    new String:error[128];
    new SMCError:result = SMC_ParseFile(parser, file, line, col);
    CloseHandle(parser);

    if (result != SMCError_Okay) {
        SMC_GetErrorString(result, error, sizeof(error));
        LogError("%s on line %d, col %d of %s", error, line, col, file);
    }

    return (result == SMCError_Okay);
}

new g_configLevel;
public SMCResult:Config_NewSection(Handle:parser, const String:section[], bool:quotes)
{
    g_configLevel++;
    if (g_configLevel==2)
    {
        if (StrEqual("PrimaryMenu", section, false)) SMC_SetReaders(parser, Config_NewSection, Config_PrimaryKeyValue, Config_EndSection);
        else if (StrEqual("SecondaryMenu", section, false)) SMC_SetReaders(parser, Config_NewSection, Config_SecondaryKeyValue, Config_EndSection);
    }
    else SMC_SetReaders(parser, Config_NewSection, Config_UnknownKeyValue, Config_EndSection);
    return SMCParse_Continue;
}

public SMCResult:Config_UnknownKeyValue(Handle:parser, const String:key[], const String:value[], bool:key_quotes, bool:value_quotes)
{
    SetFailState("\nDidn't recognize configuration: Level %i %s=%s", g_configLevel, key, value);
    return SMCParse_Continue;
}

public SMCResult:Config_PrimaryKeyValue(Handle:parser, const String:weapon_class[], const String:weapon_name[], bool:key_quotes, bool:value_quotes) {
    if (g_PrimaryGunCount>=MAX_WEAPON_COUNT) SetFailState("\nToo many weapons declared!");

    decl String:weapon_id[4];
    strcopy(g_PrimaryGuns[g_PrimaryGunCount], sizeof(g_PrimaryGuns[]), weapon_class);
    Format(weapon_id, sizeof(weapon_id), "%02.2X", g_PrimaryGunCount++);
    AddMenuItem(g_PrimaryMenu, weapon_id, weapon_name);
    return SMCParse_Continue;
}

public SMCResult:Config_SecondaryKeyValue(Handle:parser, const String:weapon_class[], const String:weapon_name[], bool:key_quotes, bool:value_quotes)
{
    if (g_SecondaryGunCount>=MAX_WEAPON_COUNT) SetFailState("\nToo many weapons declared!");

    decl String:weapon_id[4];
    strcopy(g_SecondaryGuns[g_SecondaryGunCount], sizeof(g_SecondaryGuns[]), weapon_class);
    Format(weapon_id, sizeof(weapon_id), "%02.2X", g_SecondaryGunCount++);
    AddMenuItem(g_SecondaryMenu, weapon_id, weapon_name);
    return SMCParse_Continue;
}

public SMCResult:Config_EndSection(Handle:parser)
{
    g_configLevel--;
    SMC_SetReaders(parser, Config_NewSection, Config_UnknownKeyValue, Config_EndSection);
    return SMCParse_Continue;
}

public Config_End(Handle:parser, bool:halted, bool:failed)
{
    if (failed) SetFailState("\nPlugin error");
}

public MenuHandler_ChoosePrimary(Handle:menu, MenuAction:action, param1, param2)
{
    if (action == MenuAction_Display) g_MenuOpen[param1] = true;
    else if (action == MenuAction_Select)
    {
        new client = param1;
        new team = GetClientTeam(client);
        decl String:weapon_id[4];
        GetMenuItem(menu, param2, weapon_id, sizeof(weapon_id));
        new weapon = StringToInt(weapon_id, 16);

        g_PlayerPrimary[client] = weapon;
        if (team > CS_TEAM_SPECTATOR) GivePrimary(client);

        DisplayMenu(g_SecondaryMenu, client, MENU_TIME_FOREVER);
    }
    else if (action == MenuAction_Cancel)
    {
        g_MenuOpen[param1] = false;
        if (param2 == MenuCancel_Exit)    // CancelClientMenu sends MenuCancel_Interrupted reason
        {
            if (g_SecondaryMenu != INVALID_HANDLE) DisplayMenu(g_SecondaryMenu, param1, MENU_TIME_FOREVER);
        }
    }
}

public MenuHandler_ChooseSecondary(Handle:menu, MenuAction:action, param1, param2)
{
    if (action == MenuAction_Display) g_MenuOpen[param1] = true;
    else if (action == MenuAction_Select)
    {
        new client = param1;
        new team = GetClientTeam(client);
        decl String:weapon_id[4];
        GetMenuItem(menu, param2, weapon_id, sizeof(weapon_id));
        new weapon = StringToInt(weapon_id, 16);

        g_PlayerSecondary[client] = weapon;
        if (team > CS_TEAM_SPECTATOR) GiveSecondary(client);
    }
    else if (action == MenuAction_Cancel) g_MenuOpen[param1] = false;
}

public Action:Event_HandleSpawn(Handle:timer, any:user)
{
    new client = GetClientOfUserId(user);
    new g_menu_round = GetConVarInt(Menu_round);
    if (!client) return;

    if (GetConVarBool(Menu_onspawn) && Rounds >= g_menu_round > 0 )
    {
        if (g_PlayerPrimary[client]==SHOW_MENU && g_PlayerSecondary[client]==SHOW_MENU)
        {
            if (g_PrimaryMenu != INVALID_HANDLE) DisplayMenu(g_PrimaryMenu, client, MENU_TIME_FOREVER);
            else if (g_SecondaryMenu != INVALID_HANDLE) DisplayMenu(g_SecondaryMenu, client, MENU_TIME_FOREVER);
        }
        else
        {
            GivePrimary(client);
            GiveSecondary(client);
        }
    }
}

stock GivePrimary(client)
{
    new weapon = g_PlayerPrimary[client];
    RemoveWeaponBySlot(client, 0);
    if (weapon >= 0 && weapon < g_PrimaryGunCount) GivePlayerItem(client, g_PrimaryGuns[weapon]);
}

stock GiveSecondary(client)
{
    new weapon = g_PlayerSecondary[client];
    RemoveWeaponBySlot(client, 1);
    if (weapon >= 0 && weapon < g_SecondaryGunCount) GivePlayerItem(client, g_SecondaryGuns[weapon]);
}

public Action:Command_VipMenu(client, args)
{
    new g_menu_round = GetConVarInt(Menu_round);
    if (IsPlayerGenericAdmin(client))
    {
        if (IsClientInGame(client) && Rounds >= g_menu_round > 0 && GetConVarBool(Menu_command))
        {
            if (g_PrimaryMenu != INVALID_HANDLE) DisplayMenu(g_PrimaryMenu, client, MENU_TIME_FOREVER);
            else if (g_SecondaryMenu != INVALID_HANDLE) DisplayMenu(g_SecondaryMenu, client, MENU_TIME_FOREVER);
        }
    }
    return Plugin_Continue;
}

stock CheckCloseHandle(&Handle:handle)
{
    if (handle != INVALID_HANDLE)
    {
        CloseHandle(handle);
        handle = INVALID_HANDLE;
    }
}


stock min(a, b) {return (a<b) ? a:b;}
stock max(a, b) {return (a>b) ? a:b;}

/*
@param client id

return bool
*/
bool:IsPlayerGenericAdmin(client)
{
    if (!CheckCommandAccess(client, "sm_vip", 0, true)) return false;    
    {
        return true;

    }
}

 

Share this post


Link to post
Share on other sites
59 minut temu, Mesharsky napisał:

Masz od Hanysa.

 

Masz tam granaty od 2 rundy ?

 

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

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

Granaty niestety pokazują się w pierwszej rundzie

 

Share this post


Link to post
Share on other sites

Jesteś pewien że usunąłeś stary plugin i wrzuciłeś ten? Powinno działać prawidłowo, sprawdź dokładnie zainstalowane pluginy.

Share this post


Link to post
Share on other sites
Przed chwilą, Mesharsky napisał:

Jesteś pewien że usunąłeś stary plugin i wrzuciłeś ten? Powinno działać prawidłowo, sprawdź dokładnie zainstalowane pluginy.

Tak, jestem pewien i granaty dostaje na rozgrzewce i później od pierwszej rundy

Share this post


Link to post
Share on other sites
2 minuty temu, Lisu napisał:

Tak, jestem pewien i granaty dostaje na rozgrzewce i później od pierwszej rundy

Spróbuj w takim razie tak

 

 

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

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

  • Kocham to! 1

Share this post


Link to post
Share on other sites
3 minuty temu, Mesharsky napisał:

Jesteś pewien że usunąłeś stary plugin i wrzuciłeś ten? Powinno działać prawidłowo, sprawdź dokładnie zainstalowane pluginy.

Dobra, jednak chyba działa, wrzuciłem Twój plik smx. bo bo kompilacji nie działało.

  • Lubię to! 1

Share this post


Link to post
Share on other sites
1 minutę temu, Lisu napisał:

Dobra, jednak chyba działa, wrzuciłem Twój plik smx. bo bo kompilacji nie działało.

To się cieszę, sprawdź dokładnie jeszcze raz wszystko, jeżeli działa prawidłowo daj znać a zamknę temat ? 

ps: dzisiaj wypuszczam nową wersję mojego vipa napisanego dużo lepiej więc będziesz miał tam właśnie opcje które tutaj potrzebujesz.

Share this post


Link to post
Share on other sites
Posted (edited)

Dzięki wielkie, wszystko działa, możesz zamknąć.

Edited by Lisu

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
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...