Hellp in knife menu

Въпроси и проблеми свързани с AMXModX.
Аватар
Amine
Извън линия
Потребител
Потребител
Мнения: 6
Регистриран на: 15 Май 2022, 00:12

Hellp in knife menu

Мнение от Amine » 15 Май 2022, 00:19

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)
Последно промяна от Amine на 16 Май 2022, 11:01, променено общо 1 път.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Hellp in knife menu

Мнение от OciXCrom » 15 Май 2022, 01:15

FLAG -- admin access flag
?

Аватар
Amine
Извън линия
Потребител
Потребител
Мнения: 6
Регистриран на: 15 Май 2022, 00:12

Hellp in knife menu

Мнение от Amine » 15 Май 2022, 11:32

OciXCrom написа: 15 Май 2022, 01:15
FLAG -- admin access flag
?
I want put this user : zpv_is_user_vip(id)

Аватар
Amine
Извън линия
Потребител
Потребител
Мнения: 6
Регистриран на: 15 Май 2022, 00:12

Hellp in knife menu

Мнение от Amine » 16 Май 2022, 11:00

@OciXCrom ??

Аватар
Radeon
Извън линия
Потребител
Потребител
Мнения: 143
Регистриран на: 04 Апр 2021, 11:30
Се отблагодари: 2 пъти
Получена благодарност: 34 пъти
Обратна връзка:

Hellp in knife menu

Мнение от Radeon » 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" */

Аватар
Amine
Извън линия
Потребител
Потребител
Мнения: 6
Регистриран на: 15 Май 2022, 00:12

Hellp in knife menu

Мнение от Amine » 16 Май 2022, 23:16

Radeon написа: 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" */
I don't have flag in my sma vip

Код за потвърждение: Избери целия код

# 

#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

Мнение от Radeon » 17 Май 2022, 10:14

You have it set in zp_vip.ini check there. After that it will be easy to set knives for vips only

Аватар
Amine
Извън линия
Потребител
Потребител
Мнения: 6
Регистриран на: 15 Май 2022, 00:12

Hellp in knife menu

Мнение от Amine » 17 Май 2022, 23:21

@@@@

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Поддръжка / Помощ”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 8 госта