Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSS[Request] Editing the Blockmaker Shop plugin


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
Hello!
I am using this blockmaker shop plugin, but when u write /shop and you are CT it says that u have to be T, but usually the blockmaker shops plugin should work for CT not for T, so if possible fix that and i would like to remove the middle top hud that is showing BM Points / XP and etc.
Code:

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

                              |**********************************|
                              |==================================|
                              |=    BlockMaker Item Shop        =|
                              |==================================|
                              |**********************************|

|= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =|
 |                                                                                                  |
 |                                                                                                  |
 |                        Copyright © 2017-2018, AJW1337//                                            |
 |                        This file is provided as is (no warranties)                                    |
 |                                                                                                  |
 |                        BlockMaker Item Shop is free software;                                              |
 |                        you can redistribute it and/or modify it under the terms of the            |
 |                        GNU General Public License as published by the Free Software Foundation.  |
 |                                                                                                  |       
 |                        This program is distributed in the hope that it will be useful,            |
 |                        but WITHOUT ANY WARRANTY; without even the implied warranty of            |
 |                        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                            |
 |                                                                                                  |
 |                                                                                                  |
 |                        Plugin requested by Coca Cola _-FxF-_                                          |
 |                                                                                                  |
|= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =|
                                          |---------------|
                                          |  Changelog  |
                                          |---------------|
                                v1.0 Official Plugin Release
                                                                                       
==================================================================================================*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <fvault>
#include <WPMGPrintChatColor>
#include <hamsandwich>
#include <engine>

#if AMXX_VERSION_NUM < 183
        #include <dhudmessage>
        #define client_disconnected client_disconnect
#endif

native add_user_immune(id)
native remove_user_immune(id)

native hnsxp_get_user_xp(id)
native hnsxp_set_user_xp(id, iExp)

stock hnsxp_add_user_xp(id, iExp)
        return hnsxp_set_user_xp(id, hnsxp_get_user_xp(id) + iExp)


new const PLUGIN[] = "BlockMaker Item Shop"
new const VERSION[] = "1.0"
new const AUTHOR[] = "AJW1337//"
new const BM_ItemShopDB[] = "BM_ItemShop_DataBase"

enum _:Info
{
        PRICE = 0,
        LIMIT,
        AMOUNT
}

enum _:Items
{
        HEALTH,
        ARMOR,
        HE_NADE,
        NO_FROST,
        NO_FLASH,
        AWP,
        M3,
        DEAGLE,
        XP,
        RESPAWN
}

new const szItemNames[Items][] =
{
        "Health",
        "Armor",
        "HE Grenade",
        "Anti Frost",
        "Anti Flash",
        "AWP",
        "M3",
        "Deagle",
        "XP",
        "Respawn"
}

new ItemInfo[Items][Info], g_ItemsLimit[33][Items], bool:g_IsBought[33][Items]
new g_iPoints[33], bool:g_bConnected[33]
new g_iSyncMessage

// For Anti Flash
new Float:g_flGameTime[2], g_iOwner
new g_iGrenade[32], bool:g_iTrackEnemy, bool:g_iTrack[33]
new g_iMsgScreenFade, g_iLast, g_iSyncData
new g_bNoFlash[33]
// For Anti Flash

enum
{
        SECTION_SHOP = 1,
        SECTION_PRICE,
        SECTION_LIMIT,
        SECTION_AMOUNT
}

enum _:DataItems
{
        SHOP_PREFIX[32],
        SHOP_MENU_PREFIX[32],
        SHOP_COMMAND[32],
        HS_KILL_POINTS,
        KILL_POINTS,
        PRINT_COLOR,
        D_HUD_MESSAGE,
        D_HUD_CUSTOM_COLOR,
        RED_COLOR,
        GREEN_COLOR,
        BLUE_COLOR,
        Float:COORD_X,
        Float:COORD_Y
}

new g_eItems[DataItems]

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR)
        register_cvar("BM_ItemShop", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
       
        register_dictionary("blockmaker_itemshop.txt")
       
        register_clcmd("say", "Command_HookSay")
        register_clcmd("say_team", "Command_HookSay")
       
        register_concmd("amx_reload_file", "Command_ReloadFile", ADMIN_BAN)
       
        register_clcmd("BM_Points_Amount", "Command_BM_Points_Amount", ADMIN_BAN)

        register_event("DeathMsg", "eventDeathMsg", "a")
        register_logevent("eventRoundStart", 2, "1=Round_Start")
       
        register_event("ScreenFade", "eventFlash", "be", "4=255", "5=255", "6=255", "7>199")
        register_event("TextMsg", "fire_in_the_hole", "b", "2&#Game_radio", "4&#Fire_in_the_hole")
        register_event("TextMsg", "fire_in_the_hole2", "b", "3&#Game_radio", "5&#Fire_in_the_hole")
        register_event("99", "grenade_throw", "b")
        set_task(2.0, "flash", .flags="b")
        g_iMsgScreenFade = get_user_msgid("ScreenFade")
       
        new iEnt = create_entity("info_target")
        entity_set_string(iEnt, EV_SZ_classname, "task_entity")
       
        register_think("task_entity", "HudEntity")
        entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 2.0)
       
        g_iSyncMessage = CreateHudSyncObj()
       
        ReadFile()
}
public plugin_natives()
{
        register_native("get_user_bm_points", "_get_user_bm_points")
        register_native("set_user_bm_points", "_set_user_bm_points")
}
public Command_ReloadFile(id, level, cid)
{
        if (!cmd_access(id, level, cid, 1))
                goto Handled
       
        ReadFile()
               
        Handled:
        return PLUGIN_HANDLED
}
ReadFile()
{
        static szConfigsDir[64], iFile
        get_configsdir(szConfigsDir, charsmax(szConfigsDir))
        add(szConfigsDir, charsmax(szConfigsDir), "/BM_ItemShop.ini")
        iFile = fopen(szConfigsDir, "rt")
       
        if (iFile)
        {
                static szLineData[160], szKey[32], szValue[128], iSection
               
                while (!feof(iFile))
                {
                        fgets(iFile, szLineData, charsmax(szLineData))
                        trim(szLineData)
                       
                        switch (szLineData[0])
                        {
                                case EOS, ';': continue
                                case '[':
                                {
                                        if (szLineData[strlen(szLineData) -1] == ']')
                                        {
                                                if (containi(szLineData, "item shop") != -1)
                                                        iSection = SECTION_SHOP
                                                else if (containi(szLineData, "item prices") != -1)
                                                        iSection = SECTION_PRICE
                                                else if (containi(szLineData, "item limits") != -1)
                                                        iSection = SECTION_LIMIT
                                                else if (containi(szLineData, "item amounts") != -1)
                                                        iSection = SECTION_AMOUNT
                                        }                                       
                                        else
                                                continue
                                }
                                default:
                                {
                                        strtok(szLineData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
                                        trim(szKey)
                                        trim(szValue)
                                       
                                        if (is_eos_line(szValue))
                                                continue
                                               
                                        switch(iSection)
                                        {
                                                case SECTION_SHOP:
                                                {
                                                        if (equal(szKey, "BM_SHOP_COMMANDS"))
                                                        {
                                                                while (szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
                                                                {
                                                                        trim(szKey)
                                                                        trim(szValue)
                                                                        register_clcmd(szKey, "Command_Shop")
                                                                }
                                                        }
                                                        else if (equal(szKey, "BM_SHOP_PRINT_COLOR"))
                                                                g_eItems[PRINT_COLOR] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_SHOP_PREFIX"))
                                                                copy(g_eItems[SHOP_PREFIX], charsmax(g_eItems[SHOP_PREFIX]), szValue)
                                                        else if (equal(szKey, "BM_SHOP_MENU_PREFIX"))
                                                                copy(g_eItems[SHOP_MENU_PREFIX], charsmax(g_eItems[SHOP_MENU_PREFIX]), szValue)
                                                        else if (equal(szKey, "BM_SHOP_HEADSHOT_KILL_POINTS"))
                                                                g_eItems[HS_KILL_POINTS] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_SHOP_NORMAL_KILL_POINTS"))
                                                                g_eItems[KILL_POINTS] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_SHOP_D_HUD_MESSAGE"))
                                                                g_eItems[D_HUD_MESSAGE] = clamp(hud_dhud(szValue), false, true)
                                                        else if (equal(szKey, "BM_SHOP_D_HUD_CUSTOM_COLOR"))
                                                                g_eItems[D_HUD_CUSTOM_COLOR] = clamp(on_off(szValue), false, true)
                                                        else if (equal(szKey, "BM_SHOP_D_HUD_RED_COLOR"))
                                                                g_eItems[RED_COLOR] = clamp(str_to_num(szValue), 0, 255)
                                                        else if (equal(szKey, "BM_SHOP_D_HUD_GREEN_COLOR"))
                                                                g_eItems[GREEN_COLOR] = clamp(str_to_num(szValue), 0, 255)
                                                        else if (equal(szKey, "BM_SHOP_D_HUD_BLUE_COLOR"))
                                                                g_eItems[BLUE_COLOR] = clamp(str_to_num(szValue), 0, 255)
                                                        else if (equal(szKey, "BM_SHOP_D_HUD_COORD_X"))
                                                                g_eItems[COORD_X] = _:str_to_float(szValue)
                                                        else if (equal(szKey, "BM_SHOP_D_HUD_COORD_Y"))
                                                                g_eItems[COORD_Y] = _:str_to_float(szValue)
                                                }
                                                case SECTION_PRICE:
                                                {
                                                        if (equal(szKey, "BM_HEALTH_PRICE"))
                                                                ItemInfo[HEALTH][PRICE] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_ARMOR_PRICE"))
                                                                ItemInfo[ARMOR][PRICE] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_HE_GRENADE_PRICE"))
                                                                ItemInfo[HE_NADE][PRICE] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_ANTI_FROST_PRICE"))
                                                                ItemInfo[NO_FROST][PRICE] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_ANTI_FLASH_PRICE"))
                                                                ItemInfo[NO_FLASH][PRICE] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_AWP_PRICE"))
                                                                ItemInfo[AWP][PRICE] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_M3_PRICE"))
                                                                ItemInfo[M3][PRICE] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_DEAGLE_PRICE"))
                                                                ItemInfo[DEAGLE][PRICE] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_XP_PRICE"))
                                                                ItemInfo[XP][PRICE] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_RESPAWN_PRICE"))
                                                                ItemInfo[RESPAWN][PRICE] = str_to_num(szValue)
                                                }
                                                case SECTION_LIMIT:
                                                {
                                                        if (equal(szKey, "BM_HEALTH_LIMIT"))
                                                                ItemInfo[HEALTH][LIMIT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_ARMOR_LIMIT"))
                                                                ItemInfo[ARMOR][LIMIT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_HE_GRENADE_LIMIT"))
                                                                ItemInfo[HE_NADE][LIMIT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_ANTI_FROST_LIMIT"))
                                                                ItemInfo[NO_FROST][LIMIT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_ANTI_FLASH_LIMIT"))
                                                                ItemInfo[NO_FLASH][LIMIT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_AWP_LIMIT"))
                                                                ItemInfo[AWP][LIMIT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_M3_LIMIT"))
                                                                ItemInfo[M3][LIMIT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_DEAGLE_LIMIT"))
                                                                ItemInfo[DEAGLE][LIMIT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_XP_LIMIT"))
                                                                ItemInfo[XP][LIMIT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_RESPAWN_LIMIT"))
                                                                ItemInfo[RESPAWN][LIMIT] = str_to_num(szValue)
                                                }
                                                case SECTION_AMOUNT:
                                                {
                                                        if (equal(szKey, "BM_HEALTH_AMOUNT"))
                                                                ItemInfo[HEALTH][AMOUNT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_ARMOR_AMOUNT"))
                                                                ItemInfo[ARMOR][AMOUNT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_HE_GRENADE_AMOUNT"))
                                                                ItemInfo[HE_NADE][AMOUNT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_ANTI_FROST_AMOUNT"))
                                                                ItemInfo[NO_FROST][AMOUNT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_ANTI_FLASH_AMOUNT"))
                                                                ItemInfo[NO_FLASH][AMOUNT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_AWP_AMOUNT"))
                                                                ItemInfo[AWP][AMOUNT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_M3_AMOUNT"))
                                                                ItemInfo[M3][AMOUNT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_DEAGLE_AMOUNT"))
                                                                ItemInfo[DEAGLE][AMOUNT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_XP_AMOUNT"))
                                                                ItemInfo[XP][AMOUNT] = str_to_num(szValue)
                                                        else if (equal(szKey, "BM_RESPAWN_AMOUNT"))
                                                                ItemInfo[RESPAWN][AMOUNT] = str_to_num(szValue)
                                                }
                                        }
                                }
                        }
                       
                }
                fclose(iFile)
        }
}
bool:is_eos_line(szString[]) return szString[0] == EOS ? true : false
bool:hud_dhud(szString[]) return szString[0] == 'd' ? true : false
bool:on_off(szString[]) return szString[1] == 'n' ? true : false

public _get_user_bm_points(iPlugin, iParams)
{
        new id = get_param(1)
       
        if (!is_user_connected(id))
                return -1
       
        return g_iPoints[id]
}

public _set_user_bm_points(iPlugin, iParams)
{
        new id = get_param(1)
       
        if (!is_user_connected(id))
                return false
       
        g_iPoints[id] = get_param(2)
        return true
}

public HudEntity(iEnt)
{
        static iPlayers[32], iNum, id, szHostName[64]
        get_players(iPlayers, iNum, "ch")
       
        for (new i = 0; i < iNum; i++)
        {
                id = iPlayers[i]
               
                if (!is_user_connected(id) || !is_user_alive(id))
                        continue
               
                get_user_name(0, szHostName, charsmax(szHostName))
               
                if (!g_eItems[D_HUD_MESSAGE])
                {
                        if (g_eItems[D_HUD_CUSTOM_COLOR])
                                set_hudmessage(g_eItems[RED_COLOR], g_eItems[GREEN_COLOR], g_eItems[BLUE_COLOR], g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
                        else
                                set_hudmessage(random(256), random(256), random(256), g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
                       
                        if(get_cvar_num("mp_timelimit"))
                        {
                                ShowSyncHudMsg(id, g_iSyncMessage, "%L", id, "D_HUD_MESSAGE_TIMELEFT",
                                get_user_health(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName, (get_timeleft( ) / 60), (get_timeleft() % 60))
                        }
                        else
                        {
                                ShowSyncHudMsg(id, g_iSyncMessage, "%L", id, "D_HUD_MESSAGE_NO_TIMELEFT",
                                get_user_health(id), get_user_armor(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName)
                        }
                }
                else if (g_eItems[D_HUD_MESSAGE])
                {
                        if (g_eItems[D_HUD_CUSTOM_COLOR])
                                set_dhudmessage(g_eItems[RED_COLOR], g_eItems[GREEN_COLOR], g_eItems[BLUE_COLOR], g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
                        else
                                set_dhudmessage(random(256), random(256), random(256), g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
                               
                        if(get_cvar_num("mp_timelimit"))
                        {
                                show_dhudmessage(id, "%L", id, "D_HUD_MESSAGE_TIMELEFT",
                                get_user_health(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName, (get_timeleft( ) / 60), (get_timeleft() % 60))
                        }
                        else
                        {
                                show_dhudmessage(id, "%L", id, "D_HUD_MESSAGE_NO_TIMELEFT",
                                get_user_health(id), get_user_armor(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName)
                        }
                }
        }
        entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.5)
}

public client_putinserver(id)
{
        for (new i = 0; i < sizeof(szItemNames); i++)
        {
                g_IsBought[id][i] = false
                g_ItemsLimit[id][i] = 0
        }
       
        g_bNoFlash[id] = false
        remove_user_immune(id)
       
        new szName[32]
        get_user_name(id, szName, charsmax(szName))
       
        set_task(0.1, "LoadData", id, szName, charsmax(szName))
}

public client_disconnected(id)
{
        for (new i = 0; i < sizeof(szItemNames); i++)
        {
                g_IsBought[id][i] = false
                g_ItemsLimit[id][i] = 0
        }
       
        g_bNoFlash[id] = false
        remove_user_immune(id)
       
        if (g_bConnected[id])
        {
                new szName[32]
                get_user_name(id, szName, charsmax(szName))
               
                SaveData(id, szName)
               
                g_bConnected[id] = false
        }
}

public eventRoundStart()
{
        for (new i = 0; i < get_maxplayers(); i++)
        {
                for (new j = 0; j < Items; j++)
                {
                        g_IsBought[i][j] = false
                        g_ItemsLimit[i][j] = 0
                }
                remove_user_immune(i)
                g_bNoFlash[i] = false
        }
}

public eventDeathMsg()
{
        new iKiller = read_data(1)
        ,iVictim = read_data(2)
        ,iHeadShot = read_data(3)
       
        if (iKiller == iVictim || !is_user_connected(iKiller))
                return
       
        new szName[32]
        get_user_name(iKiller, szName, charsmax(szName))
       
        for (new i = 0; i < sizeof(szItemNames); i++)
                g_IsBought[iVictim][i] = false
       
        g_iPoints[iKiller] += iHeadShot == 1 ? g_eItems[HS_KILL_POINTS] : g_eItems[KILL_POINTS]
       
        if (g_bConnected[iKiller])
                SaveData(iKiller, szName)
}

public Command_HookSay(id)
{
        new szArgs[64], szCommand[32], szUser[32], szAmount[8]
        read_args(szArgs, charsmax(szArgs))
        remove_quotes(szArgs)
        parse(szArgs, szCommand, charsmax(szCommand), szUser, charsmax(szUser), szAmount, charsmax(szAmount))
       
        if (equal(szCommand, "/points"))
        {
                if (szUser[0] == EOS)
                {
                        PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "YOUR_POINTS", g_eItems[SHOP_PREFIX], g_iPoints[id])
                        return PLUGIN_HANDLED
                }
                else
                {
                        new iTarget = cmd_target(id, szUser, 0)
                       
                        if (!iTarget)
                        {
                                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_FOUND",g_eItems[SHOP_PREFIX])
                                return PLUGIN_HANDLED
                        }
                       
                        new szName[32]
                        get_user_name(iTarget, szName, charsmax(szName))
                       
                        PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "TARGET_POINTS", g_eItems[SHOP_PREFIX], szName, g_iPoints[iTarget])
                        return PLUGIN_HANDLED
                }
        }
        else if (equal(szCommand, "/shopmenu"))
        {
                if (get_user_flags(id) & ADMIN_BAN)
                        ToggleShopMenu(id)
                else
                        PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NO_ACCESS", g_eItems[SHOP_PREFIX])
               
                return PLUGIN_HANDLED
        }
        else if (equal(szCommand, "/give"))
        {
                if (szUser[0] == EOS || szAmount[0] == EOS)
                {
                        PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "USAGE_GIVE", g_eItems[SHOP_PREFIX])
                        return PLUGIN_HANDLED
                }
               
                new iAmount = str_to_num(szAmount)
               
                if (iAmount <= 0)
                {
                        PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ONLY_POSITIVE", g_eItems[SHOP_PREFIX])
                        return PLUGIN_HANDLED
                }
               
                new iTarget = cmd_target(id, szUser, 0)
               
                if (!iTarget)
                {
                        PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_FOUND", g_eItems[SHOP_PREFIX])
                        return PLUGIN_HANDLED
                }
               
                if (iTarget == id)
                {
                        PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "CANT_GIVE_TO_YOURSELF", g_eItems[SHOP_PREFIX])
                        return PLUGIN_HANDLED
                }
                       
                if (iAmount > g_iPoints[id])
                        iAmount = g_iPoints[id]
               
                new szName[2][32]
                get_user_name(id, szName[0], charsmax(szName[]))
                get_user_name(iTarget, szName[1], charsmax(szName[]))
               
                g_iPoints[id] -= iAmount
                g_iPoints[iTarget] += iAmount
               
                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "POINTS_GAVE", g_eItems[SHOP_PREFIX], iAmount, szName[1])
                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "POINTS_RECEIVE", g_eItems[SHOP_PREFIX], szName[0], iAmount)
               
                return PLUGIN_HANDLED
        }
       
        return PLUGIN_CONTINUE
}
public Command_Shop(id)
{
        if (cs_get_user_team(id) == CS_TEAM_T)
                OpenItemShop(id)
        else
                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "MUST_BE_TERROR", g_eItems[SHOP_PREFIX])
                       
        return PLUGIN_HANDLED
}
public OpenItemShop(id)
{
        static szTitle[128]
        formatex(szTitle, charsmax(szTitle), "%L", id, "ITEM_SHOP_MENU_NAME", g_eItems[SHOP_MENU_PREFIX], g_iPoints[id])
        new iMenu = menu_create(szTitle, "shop_handler")
       
        for (new i = 0; i < sizeof(szItemNames); i++)
        {
                new szItem[128]
               
                if (i == HEALTH || i == ARMOR || i == XP)
                {
                        formatex(szItem, charsmax(szItem), "%L", id, "HP_AP_XP_SHOP_ITEMS", g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\d" : "\w",
                        ItemInfo[i][AMOUNT], szItemNames[i], ItemInfo[i][PRICE],
                        g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\r" : "\d", g_ItemsLimit[id][i], ItemInfo[i][LIMIT])
                }
                else
                {
                        formatex(szItem, charsmax(szItem), "%L", id, "ALL_OTHER_ITEMS", g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\d" : "\w",
                        szItemNames[i], ItemInfo[i][PRICE],
                        g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\r" : "\d", g_ItemsLimit[id][i], ItemInfo[i][LIMIT])
                }
                menu_additem(iMenu, szItem)
        }
        menu_display(id, iMenu)
        return PLUGIN_HANDLED
}

public shop_handler(id, iMenu, Item)
{
        if (!is_user_connected(id))
                goto Handled
       
        if (Item == MENU_EXIT)
        {
                menu_cancel(id)
                goto Handled
        }
       
        if (g_iPoints[id] < ItemInfo[Item][PRICE])
        {
                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NO_MONEY", g_eItems[SHOP_PREFIX])
                menu_destroy(iMenu)
                goto Handled
        }
       
        if (g_ItemsLimit[id][Item] >= ItemInfo[Item][LIMIT])
        {
                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "MAX_BUYS", g_eItems[SHOP_PREFIX])
                menu_destroy(iMenu)
                goto Handled
        }
       
        if (!is_user_alive(id) && Item != RESPAWN)
        {
                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_ALIVE", g_eItems[SHOP_PREFIX])
                menu_destroy(iMenu)
                goto Handled
        }
       
        switch (Item)
        {
                case HEALTH: fm_set_user_health(id, get_user_health(id) + ItemInfo[HEALTH][AMOUNT])
                case ARMOR: fm_set_user_armor(id, get_user_armor(id) + ItemInfo[ARMOR][AMOUNT])
                case HE_NADE:
                {
                        if (!user_has_weapon(id, CSW_HEGRENADE))
                                fm_give_item(id, "weapon_hegrenade")
                        else
                        {
                                fm_give_item(id, "weapon_hegrenade")
                                cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + ItemInfo[HE_NADE][AMOUNT])
                        }
                }
                case NO_FROST: add_user_immune(id)
                case NO_FLASH: g_bNoFlash[id] = true
                case AWP:
                {
                        new iWeapon = fm_give_item(id, "weapon_awp")
                       
                        if (pev_valid(iWeapon))
                        {
                                cs_set_weapon_ammo(iWeapon, ItemInfo[AWP][AMOUNT])
                        }
                }
                case M3:
                {
                        new iWeapon = fm_give_item(id, "weapon_m3")
                       
                        if (pev_valid(iWeapon))
                        {
                                cs_set_weapon_ammo(iWeapon, ItemInfo[M3][AMOUNT])
                        }
                }
                case DEAGLE:
                {
                        new iWeapon = fm_give_item(id, "weapon_deagle")
                       
                        if (pev_valid(iWeapon))
                        {
                                cs_set_weapon_ammo(iWeapon, ItemInfo[DEAGLE][AMOUNT])
                        }
                }
                case XP: hnsxp_add_user_xp(id, ItemInfo[XP][AMOUNT])
                case RESPAWN:
                {
                        if (is_user_alive(id))
                        {
                                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "RESPAWN_ALIVE", g_eItems[SHOP_PREFIX])
                                return PLUGIN_CONTINUE
                        }
                        ExecuteHamB(Ham_CS_RoundRespawn, id)
                }
        }
       
        g_iPoints[id] -= ItemInfo[Item][PRICE]
        g_ItemsLimit[id][Item]++
        g_IsBought[id][Item] = true
       
        if (Item == HEALTH || Item == ARMOR || Item == XP)
                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "HP_AP_XP_SHOP_ITEMS_CHAT", g_eItems[SHOP_PREFIX], ItemInfo[Item][AMOUNT], szItemNames[Item], ItemInfo[Item][PRICE])
        else
                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ALL_OTHER_ITEMS_CHAT", g_eItems[SHOP_PREFIX], szItemNames[Item], ItemInfo[Item][PRICE])
               
        menu_destroy(iMenu)
       
        Handled:
        return PLUGIN_HANDLED
}

// Anti-Flash - Start
public flash()
{
        new Float:flGameTime = get_gametime()
       
        if (flGameTime - g_flGameTime[1] > 2.5)
        {
                for (new i = 0; i < 32; i++)
                        g_iGrenade[i] = 0
        }
}

public eventFlash(id)
{
        new Float:flGameTime = get_gametime()
       
        if (flGameTime != g_flGameTime[0])
        {
                g_iOwner = get_grenade_owner()
                g_flGameTime[0] = flGameTime
               
                for (new i = 0; i < 32; i++)
                        g_iTrack[i] = false
                       
                g_iTrackEnemy = false
        }
        if (is_user_connected(g_iOwner) && g_bNoFlash[id])
        {
                g_iTrackEnemy = true
               
                message_begin(MSG_ONE, g_iMsgScreenFade, {0,0,0}, id)
                write_short(1)
                write_short(1)
                write_short(1)
                write_byte(0)
                write_byte(0)
                write_byte(0)
                write_byte(255)
                message_end()
        }
}
public flash_delay()
{
        if (!g_iTrackEnemy)
        {
                for (new i = 0; i < 33; i++)
                {
                        if (g_iTrack[i] && is_user_connected(i))
                        {
                                message_begin(MSG_ONE, g_iMsgScreenFade, {0,0,0}, i)
                                write_short(1)
                                write_short(1)
                                write_short(1)
                                write_byte(0)
                                write_byte(0)
                                write_byte(0)
                                write_byte(255)
                                message_end()
                        }
                }
        }
}

public grenade_throw()
{
        if (g_iSyncData == 0)
                goto Continue
               
        g_iSyncData--
       
        if (read_datanum() < 2)
                return PLUGIN_HANDLED_MAIN
               
        if (read_data(1) == 11 && (read_data(2) == 0 || read_data(2) == 1))
                add_grenade_owner(g_iLast)
       
        Continue:
        return PLUGIN_CONTINUE
}
public fire_in_the_hole()
{
        new szName[32]
        read_data(3, szName, charsmax(szName))
       
        new iTempLast = get_user_index(szName)
        new iJunk
       
        if ((iTempLast == 0) || (!is_user_connected(iTempLast)))
                goto Continue
       
        if (get_user_weapon(iTempLast, iJunk, iJunk) == CSW_FLASHBANG)
        {
                g_iLast  =iTempLast
                g_iSyncData = 2
        }
       
        Continue:
        return PLUGIN_CONTINUE
}

public fire_in_the_hole2()
{
        new szName[32]
        read_data(4, szName, charsmax(szName))
       
        new iTempLast = get_user_index(szName)
        new iJunk
       
        if ((iTempLast == 0) || (!is_user_connected(iTempLast)))
                goto Continue
       
        if (get_user_weapon(iTempLast, iJunk, iJunk) == CSW_FLASHBANG)
        {
                g_iLast  =iTempLast
                g_iSyncData = 2
        }
       
        Continue:
        return PLUGIN_CONTINUE
}
add_grenade_owner(iOwner)
{
        new Float:flGameTime = get_gametime()
       
        g_flGameTime[1] = flGameTime
       
        for (new i = 0; i < 32; i++)
        {
                if (g_iGrenade[i] == 0)
                {
                        g_iGrenade[i] = iOwner
                        return
                }
        }
}
get_grenade_owner()
{
        new iWhich = g_iGrenade[0]
       
        for (new i = 1; i < 32; i++)
                g_iGrenade[i-1] = g_iGrenade[i]
       
        g_iGrenade[31] = 0
        return iWhich
}

public fw_emitsound(entity, channel, const szSample[], Float:volume, Float:attenuation, fFlags, pitch)
{
        if(!equali(szSample,"weapons/flashbang-1.wav") && !equali(szSample,"weapons/flashbang-2.wav"))
                goto Ignored
       
        new Float:flGameTime = get_gametime()
       
        if(flGameTime != g_flGameTime[0])
        {
                g_iOwner = get_grenade_owner()
                goto Ignored
        }
       
        Ignored:
        return FMRES_IGNORED;
}

/* ================================================
        Shop Points Menu
================================================ */
new g_iPlayer[33], g_iMenuType[33]

public ToggleShopMenu(id)
{
        static szTitle[64]
        formatex(szTitle, charsmax(szTitle), "%s \d~ \wShop Admin Menu", g_eItems[SHOP_MENU_PREFIX])
        new iMenu = menu_create(szTitle, "shopmenu_handler")
       
        menu_additem(iMenu, "\yGive \dPlayer \rBM Points")
        menu_additem(iMenu, "\yTake \dPlayer \rBM Points^n")
       
        menu_setprop(iMenu, MPROP_NUMBER_COLOR, "\w")
        menu_setprop(iMenu, MPROP_EXITNAME, "\yExit \rShop \dAdmin \rMenu\d..")
        menu_display(id, iMenu, 0)
        return PLUGIN_HANDLED
}
public shopmenu_handler(id, iMenu, Item)
{
        if (Item == MENU_EXIT)
        {
                menu_destroy(iMenu)
                goto Handled
        }
       
        switch(Item)
        {
                case 0: PlayerPointsMenu(id, 1)
                case 1: PlayerPointsMenu(id, 2)
        }
       
        menu_destroy(iMenu)
        Handled:
        return PLUGIN_HANDLED
}

public PlayerPointsMenu(id, iType)
{
        static szTitle[64]
        formatex(szTitle, charsmax(szTitle), "Choose Player to %s XP", iType == 1 ? "Give" : "Take")
        new iMenu = menu_create(szTitle, "points_handler")
       
        g_iMenuType[id] = iType
       
        new iPlayers[32], iNum, iPlayer
        new szName[34], szTempID[10]
        get_players(iPlayers, iNum)
       
        for(new i; i < iNum; i++)
        {
                iPlayer = iPlayers[i]
                if(!is_user_connected(iPlayer))
                        continue
               
                get_user_name(iPlayer, szName, sizeof szName - 1)
                num_to_str(iPlayer, szTempID, charsmax(szTempID))
                menu_additem(iMenu, szName, szTempID)
        }
        menu_setprop(iMenu, MPROP_EXITNAME, "Go back..")
        menu_display(id, iMenu, 0)
        return PLUGIN_HANDLED
}
public points_handler(id, iMenu, Item)
{
        if (Item == MENU_EXIT)
        {
                ToggleShopMenu(id)
                g_iMenuType[id] = 0
                goto Handled
        }
       
        new szData[6], iName[64], iAccess, iCallBack
        menu_item_getinfo(iMenu, Item, iAccess, szData, charsmax(szData), iName, charsmax(iName), iCallBack)
       
        g_iPlayer[id] = str_to_num(szData)
       
        if (!is_user_connected(g_iPlayer[id]))
        {
                g_iPlayer[id] = 0
                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_IN_SERVER", g_eItems[SHOP_PREFIX])
                goto Handled
        }
       
        PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "TARGET_POINTS", g_eItems[SHOP_PREFIX], iName, g_iPoints[g_iPlayer[id]])
       
        client_cmd(id, "messagemode BM_Points_Amount")
        menu_destroy(iMenu)
        Handled:
        return PLUGIN_HANDLED
}
public Command_BM_Points_Amount(id, level, cid)
{
        if (!cmd_access(id, level, cid, 1))
                goto Handled
               
        if (!g_iPlayer[id])
                goto Handled
               
        if (!is_user_connected(g_iPlayer[id]))
        {
                PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_IN_SERVER", g_eItems[SHOP_PREFIX])
                goto Handled
        }
       
        new szArgs[12]
        read_argv(1, szArgs, charsmax(szArgs))
       
        new iBM_Points = str_to_num(szArgs)
       
        new szNames[2][32]
        get_user_name(id, szNames[0], charsmax(szNames[]))
        get_user_name(g_iPlayer[id], szNames[1], charsmax(szNames[]))
       
        switch (g_iMenuType[id])
        {
                case 1:
                {
                        g_iPoints[g_iPlayer[id]] += iBM_Points
                        PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ADMIN_GAVE", g_eItems[SHOP_PREFIX], szNames[0], iBM_Points, szNames[1])
                }
                case 2:
                {
                        g_iPoints[g_iPlayer[id]] -= iBM_Points
                        PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ADMIN_TAKE", g_eItems[SHOP_PREFIX], szNames[0], iBM_Points, szNames[1])
                }
        }
        g_iPlayer[id] = 0
        g_iMenuType[id] = 0
       
        ToggleShopMenu(id)
       
        Handled:
        return PLUGIN_HANDLED
}
public client_infochanged(id)
{
        if (!is_user_connected(id))
                goto Handled
       
        new szNewName[32], szOldName[32]
        get_user_name(id, szOldName, charsmax(szOldName))
        get_user_info(id, "name", szNewName, charsmax(szNewName))
       
        if (!equal(szNewName, szOldName))
        {
                SaveData(id, szOldName)
                set_task(0.1, "LoadData", id, szNewName, charsmax(szNewName))
                goto Handled
        }
       
        Handled:
        return PLUGIN_HANDLED
}
public SaveData(id, szName[])
{
        new szData[18]
        num_to_str(g_iPoints[id], szData, charsmax(szData))
       
        fvault_set_data(BM_ItemShopDB, szName, szData)
}

public LoadData(szName[], id)
{
        new szData[18]
       
        if (fvault_get_data(BM_ItemShopDB, szName, szData, charsmax(szData)))
                g_iPoints[id] = str_to_num(szData)
        else
                g_iPoints[id] = 0
       
        g_bConnected[id] = true
}

Przeczytaj cały wpis

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...