Hellp in knife menu
Hellp in knife menu
I use this knife menu
https://forums.alliedmods.net/showthread.php?t=293632
Of @OciXCrom
I want put user of my system vip in knifemene.ini
Like this VIP = 1
User is : zpv_is_user_vip(id)
https://forums.alliedmods.net/showthread.php?t=293632
Of @OciXCrom
I want put user of my system vip in knifemene.ini
Like this VIP = 1
User is : zpv_is_user_vip(id)
Последно промяна от Amine на 16 Май 2022, 11:01, променено общо 1 път.
-
Radeon
Извън линия - Потребител
- Мнения: 143
- Регистриран на: 04 Апр 2021, 11:30
- Се отблагодари: 2 пъти
- Получена благодарност: 34 пъти
- Обратна връзка:
Hellp in knife menu
You need to say what flag you use in your vip plugin. zpv_is_user_vip(id) only makes check for the flag
Код за потвърждение: Избери целия код
#define ADMIN_ALL 0 /* everyone */
#define ADMIN_IMMUNITY (1<<0) /* flag "a" */
#define ADMIN_RESERVATION (1<<1) /* flag "b" */
#define ADMIN_KICK (1<<2) /* flag "c" */
#define ADMIN_BAN (1<<3) /* flag "d" */
#define ADMIN_SLAY (1<<4) /* flag "e" */
#define ADMIN_MAP (1<<5) /* flag "f" */
#define ADMIN_CVAR (1<<6) /* flag "g" */
#define ADMIN_CFG (1<<7) /* flag "h" */
#define ADMIN_CHAT (1<<8) /* flag "i" */
#define ADMIN_VOTE (1<<9) /* flag "j" */
#define ADMIN_PASSWORD (1<<10) /* flag "k" */
#define ADMIN_RCON (1<<11) /* flag "l" */
#define ADMIN_LEVEL_A (1<<12) /* flag "m" */
#define ADMIN_LEVEL_B (1<<13) /* flag "n" */
#define ADMIN_LEVEL_C (1<<14) /* flag "o" */
#define ADMIN_LEVEL_D (1<<15) /* flag "p" */
#define ADMIN_LEVEL_E (1<<16) /* flag "q" */
#define ADMIN_LEVEL_F (1<<17) /* flag "r" */
#define ADMIN_LEVEL_G (1<<18) /* flag "s" */
#define ADMIN_LEVEL_H (1<<19) /* flag "t" */
#define ADMIN_MENU (1<<20) /* flag "u" */
#define ADMIN_BAN_TEMP (1<<21) /* flag "v" */
#define ADMIN_ADMIN (1<<24) /* flag "y" */
#define ADMIN_USER (1<<25) /* flag "z" */
Hellp in knife menu
I don't have flag in my sma vipRadeon написа: ↑16 Май 2022, 17:42 You need to say what flag you use in your vip plugin. zpv_is_user_vip(id) only makes check for the flagКод за потвърждение: Избери целия код
#define ADMIN_ALL 0 /* everyone */ #define ADMIN_IMMUNITY (1<<0) /* flag "a" */ #define ADMIN_RESERVATION (1<<1) /* flag "b" */ #define ADMIN_KICK (1<<2) /* flag "c" */ #define ADMIN_BAN (1<<3) /* flag "d" */ #define ADMIN_SLAY (1<<4) /* flag "e" */ #define ADMIN_MAP (1<<5) /* flag "f" */ #define ADMIN_CVAR (1<<6) /* flag "g" */ #define ADMIN_CFG (1<<7) /* flag "h" */ #define ADMIN_CHAT (1<<8) /* flag "i" */ #define ADMIN_VOTE (1<<9) /* flag "j" */ #define ADMIN_PASSWORD (1<<10) /* flag "k" */ #define ADMIN_RCON (1<<11) /* flag "l" */ #define ADMIN_LEVEL_A (1<<12) /* flag "m" */ #define ADMIN_LEVEL_B (1<<13) /* flag "n" */ #define ADMIN_LEVEL_C (1<<14) /* flag "o" */ #define ADMIN_LEVEL_D (1<<15) /* flag "p" */ #define ADMIN_LEVEL_E (1<<16) /* flag "q" */ #define ADMIN_LEVEL_F (1<<17) /* flag "r" */ #define ADMIN_LEVEL_G (1<<18) /* flag "s" */ #define ADMIN_LEVEL_H (1<<19) /* flag "t" */ #define ADMIN_MENU (1<<20) /* flag "u" */ #define ADMIN_BAN_TEMP (1<<21) /* flag "v" */ #define ADMIN_ADMIN (1<<24) /* flag "y" */ #define ADMIN_USER (1<<25) /* flag "z" */
Код за потвърждение: Избери целия код
#
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <amx_settings_api>
//#include <zp50_colorchat>
#include <zp50_items_const>
#define LIBRARY_NEMESIS "zp50_class_nemesis"
#include <zp50_class_nemesis>
#define LIBRARY_AMMOPACKS "zp50_ammopacks"
#include <zp50_ammopacks>
const MAXPLAYERS = 32;
new const ZP_VIP_ITEMS_FILE[] = "zp_vip_items.ini";
enum _:ePluginForwards
{
FW_ITEM_SELECT_PRE = 0,
FW_ITEM_SELECT_POST,
};
enum _:eExtraItems
{
ITEM_KEY[32],
ITEM_NAME[32],
ITEM_COST,
ITEM_LIMIT,
ITEM_LIMIT_PL,
};
enum _:eVips
{
VIP_AUTH[32],
VIP_PASSWORD[32],
VIP_ACCESS_FLAGS,
VIP_ACCOUNT_FLAGS,
};
enum _:eVipFlags (<<= 1)
{
VIP_FLAG_EXTRA_HP = 1,
VIP_FLAG_START_HP,
VIP_FLAG_DEATH_AP,
VIP_FLAG_EXTRA_AP,
VIP_FLAG_EXTRA_FRAG,
VIP_FLAG_FALL_DMG,
};
enum ( <<= 1 )
{
SCOREATTRIB_FLAG_NONE = 0,
SCOREATTRIB_FLAG_DEAD = 1,
SCOREATTRIB_FLAG_BOMB,
SCOREATTRIB_FLAG_VIP
};
new g_iMaxPlayers;
new Array:g_arrItems, Array:g_arrVips;
new g_iItemLimit[MAXPLAYERS+1][64], g_iMenuPage[MAXPLAYERS+1], g_stAccessFlags[MAXPLAYERS+1], g_hForward[ePluginForwards], g_szExtraText[32];
new g_iItemsCount, g_iForwardRet, g_fCanBuy, g_fIsVip, g_iVipsCount;
new cvar_infection_health_bonus, cvar_vip_extra_frag, cvar_vip_extra_ap, cvar_vip_extra_hp;
#define SetPlayerBit(%1,%2) (%1 |= (1<<(%2&31)))
#define ClearPlayerBit(%1,%2) (%1 &= ~(1 <<(%2&31)))
#define CheckPlayerBit(%1,%2) (%1 & (1<<(%2&31)))
#define DMG_FALL (1<<5) // Fell too far
public plugin_init()
{
register_plugin("[ZP:50] VIP Mode", ZP_VERSION_STRING, "CrazY");
g_iMaxPlayers = get_maxplayers();
register_event("HLTV", "eventNewRound", "a", "1=0", "2=0");
register_message(get_user_msgid("ScoreAttrib"), "messageScoreAttrib");
register_clcmd("say /vipmenu", "cmdShowMenuVip");
register_clcmd("say /vm", "cmdShowMenuVip");
cvar_vip_extra_frag = register_cvar("zpv_extra_frags", "5");
cvar_vip_extra_ap = register_cvar("zpv_extra_ap", "3");
cvar_vip_extra_hp = register_cvar("zpv_extra_hp", "1000");
RegisterHam(Ham_Killed, "player", "CBasePlayer_Killed_Post", 1);
RegisterHam(Ham_TakeDamage, "player", "CBasePlayer_TakeDamage");
g_hForward[FW_ITEM_SELECT_PRE] = CreateMultiForward("zpv_fw_items_select_pre", ET_CONTINUE, FP_CELL, FP_CELL, FP_CELL);
g_hForward[FW_ITEM_SELECT_POST] = CreateMultiForward("zpv_fw_items_select_post", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL);
}
public plugin_precache()
{
g_arrItems = ArrayCreate(eExtraItems, 1);
g_arrVips = ArrayCreate(eVips, 1);
loadSettings();
}
public plugin_natives()
{
register_library("zp50_vip");
register_native("zpv_items_register", "native_items_register");
register_native("zpv_items_get_id", "native_items_get_id");
register_native("zpv_items_get_name", "native_items_get_name");
register_native("zpv_items_get_key", "native_items_get_key");
register_native("zpv_items_get_cost", "native_items_get_cost");
register_native("zpv_items_get_limit", "native_items_get_limit");
register_native("zpv_items_get_limit", "native_items_get_limit_pl");
register_native("zpv_items_show_menu", "native_items_show_menu");
register_native("zpv_items_force_buy", "native_items_force_buy");
register_native("zpv_items_menu_text_add", "native_items_menu_text_add");
register_native("zpv_is_user_vip", "native_is_user_vip");
register_native("zpv_set_user_vip", "native_set_user_vip", 1);
set_module_filter("moduleFilter");
set_native_filter("nativeFilter");
}
public plugin_cfg()
{
cvar_infection_health_bonus = get_cvar_pointer("zp_infection_health_bonus");
}
public client_authorized(pPlayer)
{
ClearPlayerBit(g_fIsVip, pPlayer);
accessUser(pPlayer);
}
public client_putinserver(pPlayer)
{
if (!is_dedicated_server() && pPlayer == 1)
{
ClearPlayerBit(g_fIsVip, pPlayer);
accessUser(pPlayer);
}
if (CheckPlayerBit(g_fIsVip, pPlayer))
{
new szName[32];
SetPlayerBit(g_fCanBuy, pPlayer);
get_user_name(pPlayer, szName, charsmax(szName));
client_printcolor(0, "^4VIP player %s has connected.", szName);
}
}
public client_disconnect(this)
{
g_iMenuPage[this] = 0;
arrayset(g_iItemLimit[this], 0, g_iItemsCount);
}
public moduleFilter(const szModule[])
{
if (equal(szModule, LIBRARY_NEMESIS) || equal(szModule, LIBRARY_AMMOPACKS))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public nativeFilter(const szName[], iId, iTrap)
{
if (!iTrap)
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public eventNewRound()
{
new stPlayers[MAXPLAYERS], iPlayersCount, pPlayer;
get_players(stPlayers, iPlayersCount);
for (new i = 0;i < iPlayersCount; i++)
{
pPlayer = stPlayers[i];
if (CheckPlayerBit(g_fIsVip, pPlayer))
{
arrayset(g_iItemLimit[pPlayer], 0, g_iItemsCount);
SetPlayerBit(g_fCanBuy, pPlayer);
}
}
arrayset(g_iItemLimit[0], 0, g_iItemsCount);
}
public messageScoreAttrib(iMsgId, iDest, pevEntity)
{
if (get_msg_args() < 2)
return PLUGIN_CONTINUE;
new pevPlayer = get_msg_arg_int(1);
if (!CheckPlayerBit(g_fIsVip, pevPlayer))
return PLUGIN_CONTINUE;
if (!is_user_alive(pevPlayer))
return PLUGIN_CONTINUE;
set_msg_arg_int(2, ARG_BYTE, SCOREATTRIB_FLAG_VIP);
return PLUGIN_CONTINUE;
}
public cmdShowMenuVip(pPlayer)
{
if (!CheckPlayerBit(g_fIsVip, pPlayer))
{
zp_colored_print(pPlayer, "You're not a VIP user.");
return PLUGIN_HANDLED;
}
if (!is_user_alive(pPlayer))
{
zp_colored_print(pPlayer, "%L", pPlayer, "CMD_NOT");
return PLUGIN_HANDLED;
}
showMenuVip(pPlayer);
return PLUGIN_HANDLED;
}
public CBasePlayer_Killed_Post(pVictim, pAttacker, iGib)
{
if (!is_user_alive(pAttacker) || pVictim == pAttacker)
return;
if (CheckPlayerBit(g_fIsVip, pVictim))
{
if (!zp_core_is_zombie(pVictim))
return;
if (g_stAccessFlags[pVictim] & VIP_FLAG_DEATH_AP)
zp_ammopacks_set(pVictim, zp_ammopacks_get(pVictim) + 5);
}
else if (CheckPlayerBit(g_fIsVip, pAttacker))
{
if (g_stAccessFlags[pAttacker] & VIP_FLAG_EXTRA_FRAG)
set_user_frags(pAttacker, get_user_frags(pAttacker) + get_pcvar_num(cvar_vip_extra_frag));
if (g_stAccessFlags[pAttacker] & VIP_FLAG_EXTRA_AP)
zp_ammopacks_set(pAttacker, zp_ammopacks_get(pAttacker) + get_pcvar_num(cvar_vip_extra_ap));
}
}
public CBasePlayer_TakeDamage(pVictim, iInflictor, pAttacker, Float:flDmg, bitsDmgType)
{
if (!is_user_alive(pVictim) || !CheckPlayerBit(g_fIsVip, pVictim))
return HAM_IGNORED;
if ((bitsDmgType & DMG_FALL) && (g_stAccessFlags[pVictim] & VIP_FLAG_FALL_DMG))
{
SetHamParamFloat(4, 0.0);
return HAM_SUPERCEDE;
}
return HAM_IGNORED;
}
public zp_fw_core_infect_post(pPlayer, pAttacker)
{
if (is_user_connected(pPlayer) && CheckPlayerBit(g_fIsVip, pPlayer))
{
if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && zp_class_nemesis_get(pPlayer))
return;
new iHealth = get_user_health(pPlayer);
if (pPlayer != pAttacker)
{
if (cvar_infection_health_bonus)
{
new iHealthBonus = get_pcvar_num(cvar_infection_health_bonus);
if (iHealthBonus && (g_stAccessFlags[pPlayer] & VIP_FLAG_EXTRA_HP))
set_user_health(pPlayer, iHealth + iHealthBonus);
}
}
else
{
if (g_stAccessFlags[pPlayer] & VIP_FLAG_START_HP)
set_user_health(pPlayer, iHealth + get_pcvar_num(cvar_vip_extra_hp));
}
}
else if (is_user_connected(pAttacker) && CheckPlayerBit(g_fIsVip, pAttacker))
{
if (g_stAccessFlags[pAttacker] & VIP_FLAG_EXTRA_AP)
zp_ammopacks_set(pAttacker, zp_ammopacks_get(pAttacker) + get_pcvar_num(cvar_vip_extra_ap));
}
}
public zpv_fw_items_select_pre(pPlayer, iItem, iIgnoreCost)
{
new stItem[eExtraItems];
ArrayGetArray(g_arrItems, iItem, stItem);
if (stItem[ITEM_COST])
{
if (LibraryExists(LIBRARY_AMMOPACKS, LibType_Library))
{
if (zp_ammopacks_get(pPlayer) < stItem[ITEM_COST])
return ZP_ITEM_NOT_AVAILABLE;
}
else
{
if (cs_get_user_money(pPlayer) < stItem[ITEM_COST])
return ZP_ITEM_NOT_AVAILABLE;
}
}
if (stItem[ITEM_LIMIT] && g_iItemLimit[stItem[ITEM_LIMIT_PL] ? pPlayer : 0][iItem] >= stItem[ITEM_LIMIT])
return ZP_ITEM_NOT_AVAILABLE;
return ZP_ITEM_AVAILABLE;
}
public zpv_fw_items_select_post(pPlayer, iItem, iIgnoreCost)
{
new stItem[eExtraItems];
ArrayGetArray(g_arrItems, iItem, stItem);
if (stItem[ITEM_COST])
{
if (LibraryExists(LIBRARY_AMMOPACKS, LibType_Library))
zp_ammopacks_set(pPlayer, zp_ammopacks_get(pPlayer) - stItem[ITEM_COST]);
else
cs_set_user_money(pPlayer, cs_get_user_money(pPlayer) - stItem[ITEM_COST]);
}
if (stItem[ITEM_LIMIT])
g_iItemLimit[stItem[ITEM_LIMIT_PL] ? pPlayer : 0][iItem]++;
ClearPlayerBit(g_fCanBuy, pPlayer);
}
showMenuVip(pPlayer)
{
new szBuffer[64], stItem[eExtraItems], szId[3], iLen;
new hMenu = menu_create("\yVIP extra items", "menuVip");
for (new i = 0; i < g_iItemsCount; i++)
{
ArrayGetArray(g_arrItems, i, stItem);
g_szExtraText[0] = 0;
iLen = 0;
ExecuteForward(g_hForward[FW_ITEM_SELECT_PRE], g_iForwardRet, pPlayer, i, 0);
switch (g_iForwardRet)
{
case ZP_ITEM_DONT_SHOW:
{
continue;
}
case ZP_ITEM_NOT_AVAILABLE:
{
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen, "\d%s", stItem[ITEM_NAME]);
if (stItem[ITEM_COST])
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen, " %d", stItem[ITEM_COST]);
else
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen, " [FREE]");
if (stItem[ITEM_LIMIT])
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen, " [%d/%d]", g_iItemLimit[stItem[ITEM_LIMIT_PL] ? pPlayer : 0][i], stItem[ITEM_LIMIT]);
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen, " %s", g_szExtraText);
}
default:
{
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen, "%s", stItem[ITEM_NAME]);
if (stItem[ITEM_COST])
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen, " \y%d", stItem[ITEM_COST]);
else
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen, " \r[FREE]");
if (stItem[ITEM_LIMIT])
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen, " \w[%d/%d]", g_iItemLimit[stItem[ITEM_LIMIT_PL] ? pPlayer : 0][i], stItem[ITEM_LIMIT]);
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen, " %s", g_szExtraText);
}
}
num_to_str(i, szId, charsmax(szId));
menu_additem(hMenu, szBuffer, szId);
}
if (!menu_items(hMenu))
{
zp_colored_print(pPlayer, "No VIP items are available for this class.");
return;
}
g_iMenuPage[pPlayer] = min(g_iMenuPage[pPlayer], menu_pages(hMenu) - 1);
menu_display(pPlayer, hMenu, g_iMenuPage[pPlayer]);
}
public menuVip(pPlayer, hMenu, iItem)
{
if (!is_user_alive(pPlayer))
return PLUGIN_HANDLED;
if (iItem == MENU_EXIT)
{
menu_destroy(hMenu);
return PLUGIN_HANDLED;
}
new anyDummy, szItem[3];
menu_item_getinfo(hMenu, iItem, anyDummy, szItem, charsmax(szItem), _, _, anyDummy);
new iItemId = str_to_num(szItem);
menu_destroy(hMenu);
buyItem(pPlayer, iItemId, 0);
g_iMenuPage[pPlayer] = iItem / 7;
if (g_iForwardRet >= ZP_ITEM_NOT_AVAILABLE)
showMenuVip(pPlayer);
else
ClearPlayerBit(g_fCanBuy, pPlayer);
return PLUGIN_HANDLED;
}
public native_items_register(iPlugin, iParams)
{
new stItem[eExtraItems], stItem2[eExtraItems];
Последно промяна от Amine на 19 Май 2022, 21:50, променено общо 1 път.
-
Radeon
Извън линия - Потребител
- Мнения: 143
- Регистриран на: 04 Апр 2021, 11:30
- Се отблагодари: 2 пъти
- Получена благодарност: 34 пъти
- Обратна връзка:
Hellp in knife menu
You have it set in zp_vip.ini check there. After that it will be easy to set knives for vips only
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 1 Отговори
- 2283 Преглеждания
-
Последно мнение от erra1881
-
- 11 Отговори
- 3395 Преглеждания
-
Последно мнение от summertime vibes
-
- 0 Отговори
- 780 Преглеждания
-
Последно мнение от L.O.F.I
-
- 12 Отговори
- 4410 Преглеждания
-
Последно мнение от K!lLAlL
-
- 3 Отговори
- 1747 Преглеждания
-
Последно мнение от OciXCrom
-
- 9 Отговори
- 2101 Преглеждания
-
Последно мнение от zolfeca
-
- 0 Отговори
- 755 Преглеждания
-
Последно мнение от Tofua
Кой е на линия
Потребители разглеждащи този форум: 0 регистрирани и 12 госта