Заявка за редактиране на VIP плъгин
-
bruttarazza
Извън линия - Потребител
- Мнения: 10
- Регистриран на: 18 Окт 2020, 19:51
- Се отблагодари: 2 пъти
- Получена благодарност: 1 път
Заявка за редактиране на VIP плъгин
Здравейте, може ли този плъгин да се редактира следното нещо.
От менюто да се премахне избора на M249, като на негово място се сложи FAMAS и бъде достъпен от рунд 3.
От менюто да се премахне избора на M249, като на негово място се сложи FAMAS и бъде достъпен от рунд 3.
-
gadinkata
Извън линия - Потребител
- Мнения: 257
- Регистриран на: 21 Мар 2018, 12:33
- Местоположение: Враца
- Се отблагодари: 25 пъти
- Получена благодарност: 6 пъти
- Обратна връзка:
Заявка за редактиране на VIP плъгин
Код за потвърждение: Избери целия код
/*************************************************************************************************
* Возможности:
* 1. Префикс сообщений от плагина
* 2. VipMenu (vipmenu, /vipmenu) - оружия: ak47, m4a1, awp, пулемет.
* 3. Так же работают чат команды: /ak47, /m4a1, /awp, /b51.
* 4. AWP и Пулемет можно использовать с N round (настраивается).
* 5. Не работает на картах awp_, аim_, 35hp, fy_
* 6. Дополнительные HP за убийства (настраивается)
* 7. Автовыдача дигла при спавне (отключаемо), если включено можно выставить с N round (настраивается).
* 8. Автовыдача гранат при спавне (отключаемо), если включено можно выставить с N round (настраивается).
* 9. Выдача брони при спавне с N round (настраивается).
* 10. Выдача дефузов за кт при спавне с N round (настраивается).
* 11. Срок до конда с Admin Loader by Neugomon (отключаемо).
* 12. VIP статус в TAB (отключаемо).
* 13. Сообщение при подключении игрока.
* 14. Звук при заходе вип игрока (отключаемо).
* 15. Дамагер (отключаемо).
* 16. Переключение дамагера (setinfo) по команде в чат /damager
*************************************************************************************************/
#include <amxmodx>
#include <engine>
#include <reapi>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif
/* Конфигурационные defines */
#define VIP_ACCESS ADMIN_IMMUNITY // Флаг доступа VIP (по дефолту флаг "t" ADMIN_LEVEL_H)
#define PREFIX "^1[^4Sector SuperVIP^1]^1" // Префикс перед сообщениями ( ^1 - желтый ^3 - цвет команды ^4 - зеленый )
#define VIPROUND 3 // C какого round можно открыть VIP меню
#define AWPM249RND 3 // С какого round доступны AWP и пулемет
#define ADDHP_HS 0.0 // Кол-во добавляемого HP за убийство в голову (выставить 0.0 если не надо добавлять, так как закомментировать нельзя)
#define ADDHP 0.0 // Кол-во добавляемого HP за убийство (выставить 0.0 если не надо добавлять, так как закомментировать нельзя)
#define MAXHP 100.0 // Максимальное количество HP
#define VIPAUTODEAGLE // В начале каждого round давать Deagle (закомментируйте если не надо)
#define VIPAUTOGRENADE // Давать в начале каждого round гранаты (закомментируйте если не надо)
#define ROUND_NADES 1 // С какого round давать гранаты (если раскомментировано VIPAUTOGRENADE иначе нет смысла менять работать не будет)
#define ROUND_DEAGLE 1 // С какого round давать deagle (если раскомментировано VIPAUTODEAGLE иначе нет смысла менять работать не будет)
#define ROUND_ARMOR 2 // С какого round давать броню
#define ROUND_DEFUSE 1 // С какого round давать defuse kit
#define AUTOVIPMENU // Автоматически открывать в начале рануда Вип меню (выключено по дефолту)
//#define VIPTAB // Показывать статус VIP в таблице на tab (закомментируйте если не надо)
//#define ADMIN_LOADER // Срок до конца с Admin Loader by Neugomon (закомментируйте если не надо)
//#define SOUND_CONNECT // Звук при заходе вип игрока (раскомментируйте если надо)
#define DAMAGER // дамагер лесенкой (раскомментируйте если надо)
#define FIFTH_ITEM // 5-й пункт в випке переключение дамагера по нажатию (раскомментируйте если надо + раскомментировать DAMAGER)
/* Конфигурационные defines */
#define isUserVip(%0) (get_user_flags(%0) & VIP_ACCESS)
#define isUserVipr(%0) ((get_user_flags(%0) & ADMIN_RESERVATION) || (get_user_flags(%0) & VIP_ACCESS))
#define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers)
#if defined ADMIN_LOADER
native admin_expired(index);
#endif
#if defined DAMAGER
new const Float:g_fCoords[][] = { {0.52, 0.52}, {0.54, 0.54}, {0.56, 0.56}, {0.58, 0.58}, {0.60, 0.60}, {0.62, 0.62} };
new g_iPlayerPos[33];
new g_iSyncMsgDmg;
#endif
new g_iRoundCount;
new bool:g_bUseWeapon[33];
new bool:g_bBlockBonus;
new bool:g_bUserVip[33];
new g_iSyncMsgAddHP;
new g_iMaxPlayers;
new g_bShow = true;
new g_isSwitchDmg[33] = {0, ...};
new g_szText[3] = "";
public plugin_init() {
register_plugin("[ReAPI] Vip System", "1.4.0", "Dager* *.* -G-");
#if defined DAMAGER
register_clcmd("say /damager", "cmdSwitchDmg");
register_clcmd("say_team /damager", "cmdSwitchDmg");
#endif
register_clcmd("say /svipmenu", "cmdVipMenu");
register_clcmd("say_team /svipmenu", "cmdVipMenu");
register_clcmd("svipmenu", "cmdVipMenu");
register_clcmd("say", "hook_say");
register_clcmd("say_team", "hook_say");
#if defined FIFTH_ITEM
register_menucmd(register_menuid("VipMenu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5, "VipMenuHandler");
#else
register_menucmd(register_menuid("VipMenu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "VipMenuHandler");
#endif
RegisterHookChain(RG_CSGameRules_RestartRound, "CSGameRules_RestartRound_Pre", false);
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true);
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true);
#if defined DAMAGER
RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", true);
#endif
new szMapName[32], iMap_Prefix[][] = { "awp_", "aim_", "35hp", "fy_" };
rh_get_mapname(szMapName, charsmax(szMapName));
for(new i; i < sizeof iMap_Prefix; i++) {
if(containi(szMapName, iMap_Prefix[i]) != -1) {
g_bBlockBonus = true;
}
}
#if defined VIPTAB
if(!get_member_game(m_bMapHasVIPSafetyZone)) {
register_message(get_user_msgid("ScoreAttrib"), "msgScoreAttrib");
}
#endif
#if defined DAMAGER
g_iSyncMsgDmg = CreateHudSyncObj();
#endif
g_iSyncMsgAddHP = CreateHudSyncObj();
g_iMaxPlayers = get_member_game(m_nMaxPlayers);
}
#if defined VIPTAB
public msgScoreAttrib() {
if(isUserVipr(get_msg_arg_int(1)) && !get_msg_arg_int(2)) {
set_msg_arg_int(2, ARG_BYTE, (1<<2));
}
}
#endif
public CSGameRules_RestartRound_Pre() {
if(get_member_game(m_bCompleteReset)) {
g_iRoundCount = 0;
}
g_iRoundCount++;
arrayset(g_bUseWeapon, false, sizeof g_bUseWeapon);
}
public client_putinserver(id) {
if(g_bShow) {
get_user_info(id, "_damager", g_szText, charsmax(g_szText));
g_isSwitchDmg[id] = (g_szText[0]) ? str_to_num(g_szText) : 1;
} else {
g_isSwitchDmg[id] = 0;
}
if(!isUserVip(id)) {
return;
}
static szName[32];
get_entvar(id, var_netname, szName, charsmax(szName));
#if defined SOUND_CONNECT
client_cmd(0, "spk buttons/blip1.wav");
#endif
client_print_color(0, print_team_default, "%s ^1%s ^4vleze w servera! ", PREFIX, szName);
}
public CBasePlayer_Killed(pevVictim, pevAttacker) {
if(IsPlayer(pevVictim) && IsPlayer(pevAttacker) && isUserVip(pevAttacker) && pevVictim != pevAttacker) {
static Float:attackerHp, Float:addHp;
attackerHp = Float:get_entvar(pevAttacker, var_health);
addHp = get_member(pevVictim, m_bHeadshotKilled) ? ADDHP_HS : ADDHP;
attackerHp += addHp;
set_entvar(pevAttacker, var_health, attackerHp > MAXHP ? MAXHP : attackerHp);
if(attackerHp >= MAXHP) {
return;
}
if(addHp > 0.0) {
set_hudmessage(0, 255, 0, 0.6, 0.4, 2, 1.0, 1.5, 0.1, 0.3, -1);
ShowSyncHudMsg(pevAttacker, g_iSyncMsgAddHP, "+%.0f hp", addHp);
}
}
return;
}
#if defined DAMAGER
public CBasePlayer_TakeDamage(victim, inflictor, attacker, Float:damage) {
if(g_isSwitchDmg[attacker] && is_user_connected(attacker) && IsPlayer(attacker) && ent_sees_ent(attacker, victim) && get_member(victim, m_iTeam) != get_member(attacker, m_iTeam) && isUserVip(attacker)) {
static g_iDamage;
g_iDamage = floatround(damage, floatround_floor);
if(g_iDamage > 0) {
static iPos;
iPos = ++g_iPlayerPos[attacker];
if(iPos == sizeof(g_fCoords)) {
iPos = g_iPlayerPos[attacker] = 0;
}
set_hudmessage(200, 100, 100, Float:g_fCoords[iPos][0], Float:g_fCoords[iPos][1], 2, 0.2, 0.5, 0.02, 0.5, -1);
ShowSyncHudMsg(attacker, g_iSyncMsgDmg, "%d^n", g_iDamage);
}
}
}
#endif
public CBasePlayer_Spawn(id) {
if(g_bBlockBonus || !is_user_alive(id)) {
return 0;
}
if(isUserVip(id)) {
g_bUserVip[id] = true;
} else {
return g_bUserVip[id] = false;
}
#if defined VIPAUTOGRENADE
if(g_iRoundCount >= ROUND_NADES) {
rg_give_item(id, "weapon_hegrenade", GT_APPEND);
rg_give_item(id, "weapon_flashbang", GT_APPEND);
rg_give_item(id, "weapon_flashbang", GT_APPEND);
rg_give_item(id, "weapon_smokegrenade", GT_APPEND);
}
#endif
#if defined VIPAUTODEAGLE
if(g_iRoundCount >= ROUND_DEAGLE) {
rg_give_item(id, "weapon_deagle", GT_REPLACE);
rg_set_user_bpammo(id, WEAPON_DEAGLE, 35);
}
#endif
if(g_iRoundCount >= ROUND_ARMOR) {
rg_set_user_armor(id, 100, ARMOR_VESTHELM);
}
if(g_iRoundCount >= ROUND_DEFUSE) {
new TeamName:team = get_member(id, m_iTeam);
if(team == TEAM_CT) {
rg_give_defusekit(id, true);
}
}
#if defined AUTOVIPMENU
return cmdVipMenu(id);
#else
return 0;
#endif
}
public hook_say(id) {
static szMsg[128];
read_args(szMsg, 127);
remove_quotes(szMsg);
if(szMsg[0] != '/') {
return 0;
}
static const szChoosedWP[][] = { "/ak47", "/m4a1", "/awp", "/b51" };
for(new i; i < sizeof szChoosedWP; i++) {
if(!strcmp(szMsg, szChoosedWP[i])) {
if(!isAllowToUse(id)) {
break;
}
if(i > 1 && g_iRoundCount < AWPM249RND) {
return client_print_color(id, 0, "%s Orajieto e dostapno ot ^3%d ^1rund!", PREFIX, AWPM249RND);
}
return VipMenuHandler(id, i);
}
}
return 0;
}
public cmdVipMenu(id) {
if(!isAllowToUse(id)) {
return 0;
}
static szMenu[512], iLen, iKey;
iKey = MENU_KEY_0;
#if defined ADMIN_LOADER
new iExp = admin_expired(id);
if(iExp > 0) {
new sysTime = get_systime();
if(iExp - sysTime > 0) {
if((iExp - sysTime) / 86400 > 0) {
iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu: \r[\y%d дн.\r]^n^n", ((iExp - sysTime) / 86400));
} else {
iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu: \r[\y%dч. %dмин.\r]^n^n", ((iExp - sysTime) / 3600), (((iExp - sysTime) / 60) - (((iExp - sysTime) / 3600) * 60)));
}
}
} else if(iExp == 0) {
iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu^n^n");
}
#else
iLen = formatex(szMenu, charsmax(szMenu), "\ySuperVIP Menu^n^n");
#endif
iKey |= MENU_KEY_1|MENU_KEY_2;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wBezplatno \yAK47^n\r2. \wBezplatno \yM4A1^n");
if(g_iRoundCount < AWPM249RND) {
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \dBezplatno AWP \r[ot %d rund]^n\r4. \dBezplatno M249 \r[ot %d rund]^n^n", AWPM249RND, AWPM249RND);
} else {
iKey |= MENU_KEY_3|MENU_KEY_4;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3. \wBezplatno \yAWP^n\r4. \wBezplatno \yM249^n^n");
}
#if defined FIFTH_ITEM
iKey |= MENU_KEY_5;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \wPokazwane na hitovete \r[\y%s\r]^n^n", g_isSwitchDmg[id] ? "Aktivno" : "Neaktivno");
#endif
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wIzhod");
show_menu(id, iKey, szMenu, -1, "VipMenu");
return PLUGIN_HANDLED;
}
public VipMenuHandler(id, iKey) {
#if defined FIFTH_ITEM
if(iKey > 4 || g_bUseWeapon[id]) {
return 0;
}
#else
if(iKey > 3 || g_bUseWeapon[id]) {
return 0;
}
#endif
switch(iKey) {
case 0..3: {
static const szChoosedBP[] = { 90, 90, 30, 90 };
static const szChoosedWP[][] = { "weapon_ak47", "weapon_m4a1", "weapon_awp", "weapon_famas" };
g_bUseWeapon[id] = true;
return give_item_ex(id, szChoosedWP[iKey], szChoosedBP[iKey]);
}
#if defined FIFTH_ITEM
case 4: {
g_isSwitchDmg[id] = (g_isSwitchDmg[id]) ? 0 : 1;
num_to_str(g_isSwitchDmg[id], g_szText, charsmax(g_szText));
client_cmd(id, "setinfo _damager %s", g_szText);
return cmdVipMenu(id);
}
#endif
}
return PLUGIN_HANDLED;
}
stock give_item_ex(id, currWeaponName[], ammoAmount) {
rg_give_item(id, currWeaponName, GT_REPLACE);
rg_set_user_bpammo(id, rg_get_weapon_info(currWeaponName, WI_ID), ammoAmount);
engclient_cmd(id, currWeaponName);
return PLUGIN_HANDLED;
}
bool:isAllowToUse(id) {
if(!g_bUserVip[id]) {
client_print_color(id, print_team_default, "%s Samo SuperVIP igrachite imat dostap do tazi komanda!", PREFIX);
return false;
}
if(!is_user_alive(id)) {
client_print_color(id, print_team_default, "%s Triabva da si jiv za da polzwash tazi komanda!", PREFIX);
return false;
}
if(!g_iRoundCount) {
client_print_color(id, print_team_default, "%s Tazi komanda e zabranena pyrvite rundove!", PREFIX);
return false;
}
if(g_bUseWeapon[id]) {
client_print_color(id, print_team_default, "%s Veche si wzel orajie tozi rund!", PREFIX);
return false;
}
if(g_iRoundCount < VIPROUND) {
client_print_color(id, print_team_default, "%s Bezplatnite orajiq shte sa dostapni ot ^3%d ^1rund!", PREFIX, VIPROUND);
return false;
}
return true;
}
public cmdSwitchDmg(id) {
if(!isUserVip(id)) {
client_print_color(id, print_team_default, "%s Tazi komanda e samo za SuperVIP igrachi!", PREFIX);
return 0;
}
g_isSwitchDmg[id] = (g_isSwitchDmg[id]) ? 0 : 1;
num_to_str(g_isSwitchDmg[id], g_szText, charsmax(g_szText));
client_cmd(id, "setinfo _damager %s", g_szText);
new szSwitch[20];
format(szSwitch, charsmax(szSwitch), "%s", g_isSwitchDmg[id] ? "Aktivira" : "Deaktivira");
client_print_color(id, print_team_default, "%s Ti uspeshno ^3%s ^1pokazwaneto na hitovete", PREFIX, szSwitch);
return PLUGIN_CONTINUE;
}
stock bool:ent_sees_ent(iEnt, iEnt2)
{
static Float:fEntOrigin[3], Float:fEnt2Origin[3], Float:fResult[3];
entity_get_vector(iEnt, EV_VEC_origin, fEntOrigin);
entity_get_vector(iEnt2, EV_VEC_origin, fEnt2Origin);
return trace_line(iEnt, fEntOrigin, fEnt2Origin, fResult) == iEnt2;
}
-
bruttarazza
Извън линия - Потребител
- Мнения: 10
- Регистриран на: 18 Окт 2020, 19:51
- Се отблагодари: 2 пъти
- Получена благодарност: 1 път
Заявка за редактиране на VIP плъгин
Има ли някакъв вариант фамаса да се отдели от АВП-то. Защото сега на 3тия рунд отключва и авп-то, а идеята е авп-то да е достъпно на по-късен етап от играта.
EDIT 22:20/26.11.20 :
Успях да разделя AWP от FAMAS, но има проблем с оцветяването на съобщенията. 1. 2. 3. 4. 5. трябва да са в червено, но 4 и 5 се чупят. Прилагам снимки и прикачвам кода
Докато AWP е все още заключено
След като се отключи и AWP

Може ли да оправите цветовете?
EDIT 22:20/26.11.20 :
Успях да разделя AWP от FAMAS, но има проблем с оцветяването на съобщенията. 1. 2. 3. 4. 5. трябва да са в червено, но 4 и 5 се чупят. Прилагам снимки и прикачвам кода
Код за потвърждение: Избери целия код
/*************************************************************************************************
* Возможности:
* 1. Префикс сообщений от плагина
* 2. VipMenu (vipmenu, /vipmenu) - оружия: ak47, m4a1, awp, пулемет.
* 3. Так же работают чат команды: /ak47, /m4a1, /awp, /b51.
* 4. AWP и Пулемет можно использовать с N round (настраивается).
* 5. Не работает на картах awp_, аim_, 35hp, fy_
* 6. Дополнительные HP за убийства (настраивается)
* 7. Автовыдача дигла при спавне (отключаемо), если включено можно выставить с N round (настраивается).
* 8. Автовыдача гранат при спавне (отключаемо), если включено можно выставить с N round (настраивается).
* 9. Выдача брони при спавне с N round (настраивается).
* 10. Выдача дефузов за кт при спавне с N round (настраивается).
* 11. Срок до конда с Admin Loader by Neugomon (отключаемо).
* 12. VIP статус в TAB (отключаемо).
* 13. Сообщение при подключении игрока.
* 14. Звук при заходе вип игрока (отключаемо).
* 15. Дамагер (отключаемо).
* 16. Переключение дамагера (setinfo) по команде в чат /damager
*************************************************************************************************/
#include <amxmodx>
#include <engine>
#include <reapi>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif
/* Конфигурационные defines */
#define VIP_ACCESS ADMIN_IMMUNITY // Флаг доступа VIP (по дефолту флаг "t" ADMIN_LEVEL_H)
#define PREFIX "^1[^4Sector SuperVIP^1]^1" // Префикс перед сообщениями ( ^1 - желтый ^3 - цвет команды ^4 - зеленый )
#define VIPROUND 3 // C какого round можно открыть VIP меню
#define AWPRND 5 // С какого round доступны AWP и пулемет
#define ADDHP_HS 0.0 // Кол-во добавляемого HP за убийство в голову (выставить 0.0 если не надо добавлять, так как закомментировать нельзя)
#define ADDHP 0.0 // Кол-во добавляемого HP за убийство (выставить 0.0 если не надо добавлять, так как закомментировать нельзя)
#define MAXHP 100.0 // Максимальное количество HP
#define VIPAUTODEAGLE // В начале каждого round давать Deagle (закомментируйте если не надо)
#define VIPAUTOGRENADE // Давать в начале каждого round гранаты (закомментируйте если не надо)
#define ROUND_NADES 1 // С какого round давать гранаты (если раскомментировано VIPAUTOGRENADE иначе нет смысла менять работать не будет)
#define ROUND_DEAGLE 1 // С какого round давать deagle (если раскомментировано VIPAUTODEAGLE иначе нет смысла менять работать не будет)
#define ROUND_ARMOR 2 // С какого round давать броню
#define ROUND_DEFUSE 1 // С какого round давать defuse kit
#define AUTOVIPMENU // Автоматически открывать в начале рануда Вип меню (выключено по дефолту)
//#define VIPTAB // Показывать статус VIP в таблице на tab (закомментируйте если не надо)
//#define ADMIN_LOADER // Срок до конца с Admin Loader by Neugomon (закомментируйте если не надо)
//#define SOUND_CONNECT // Звук при заходе вип игрока (раскомментируйте если надо)
#define DAMAGER // дамагер лесенкой (раскомментируйте если надо)
#define FIFTH_ITEM // 5-й пункт в випке переключение дамагера по нажатию (раскомментируйте если надо + раскомментировать DAMAGER)
/* Конфигурационные defines */
#define isUserVip(%0) (get_user_flags(%0) & VIP_ACCESS)
#define isUserVipr(%0) ((get_user_flags(%0) & ADMIN_RESERVATION) || (get_user_flags(%0) & VIP_ACCESS))
#define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers)
#if defined ADMIN_LOADER
native admin_expired(index);
#endif
#if defined DAMAGER
new const Float:g_fCoords[][] = { {0.52, 0.52}, {0.54, 0.54}, {0.56, 0.56}, {0.58, 0.58}, {0.60, 0.60}, {0.62, 0.62} };
new g_iPlayerPos[33];
new g_iSyncMsgDmg;
#endif
new g_iRoundCount;
new bool:g_bUseWeapon[33];
new bool:g_bBlockBonus;
new bool:g_bUserVip[33];
new g_iSyncMsgAddHP;
new g_iMaxPlayers;
new g_bShow = true;
new g_isSwitchDmg[33] = {0, ...};
new g_szText[3] = "";
public plugin_init() {
register_plugin("[ReAPI] Vip System", "1.4.0", "Dager* *.* -G-");
#if defined DAMAGER
register_clcmd("say /damager", "cmdSwitchDmg");
register_clcmd("say_team /damager", "cmdSwitchDmg");
#endif
register_clcmd("say /svipmenu", "cmdVipMenu");
register_clcmd("say_team /svipmenu", "cmdVipMenu");
register_clcmd("svipmenu", "cmdVipMenu");
register_clcmd("say", "hook_say");
register_clcmd("say_team", "hook_say");
#if defined FIFTH_ITEM
register_menucmd(register_menuid("VipMenu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5, "VipMenuHandler");
#else
register_menucmd(register_menuid("VipMenu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "VipMenuHandler");
#endif
RegisterHookChain(RG_CSGameRules_RestartRound, "CSGameRules_RestartRound_Pre", false);
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true);
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true);
#if defined DAMAGER
RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", true);
#endif
new szMapName[32], iMap_Prefix[][] = { "awp_", "aim_", "35hp", "fy_" };
rh_get_mapname(szMapName, charsmax(szMapName));
for(new i; i < sizeof iMap_Prefix; i++) {
if(containi(szMapName, iMap_Prefix[i]) != -1) {
g_bBlockBonus = true;
}
}
#if defined VIPTAB
if(!get_member_game(m_bMapHasVIPSafetyZone)) {
register_message(get_user_msgid("ScoreAttrib"), "msgScoreAttrib");
}
#endif
#if defined DAMAGER
g_iSyncMsgDmg = CreateHudSyncObj();
#endif
g_iSyncMsgAddHP = CreateHudSyncObj();
g_iMaxPlayers = get_member_game(m_nMaxPlayers);
}
#if defined VIPTAB
public msgScoreAttrib() {
if(isUserVipr(get_msg_arg_int(1)) && !get_msg_arg_int(2)) {
set_msg_arg_int(2, ARG_BYTE, (1<<2));
}
}
#endif
public CSGameRules_RestartRound_Pre() {
if(get_member_game(m_bCompleteReset)) {
g_iRoundCount = 0;
}
g_iRoundCount++;
arrayset(g_bUseWeapon, false, sizeof g_bUseWeapon);
}
public client_putinserver(id) {
if(g_bShow) {
get_user_info(id, "_damager", g_szText, charsmax(g_szText));
g_isSwitchDmg[id] = (g_szText[0]) ? str_to_num(g_szText) : 1;
} else {
g_isSwitchDmg[id] = 0;
}
if(!isUserVip(id)) {
return;
}
static szName[32];
get_entvar(id, var_netname, szName, charsmax(szName));
#if defined SOUND_CONNECT
client_cmd(0, "spk buttons/blip1.wav");
#endif
client_print_color(0, print_team_default, "%s ^1%s ^4vleze w servera! ", PREFIX, szName);
}
public CBasePlayer_Killed(pevVictim, pevAttacker) {
if(IsPlayer(pevVictim) && IsPlayer(pevAttacker) && isUserVip(pevAttacker) && pevVictim != pevAttacker) {
static Float:attackerHp, Float:addHp;
attackerHp = Float:get_entvar(pevAttacker, var_health);
addHp = get_member(pevVictim, m_bHeadshotKilled) ? ADDHP_HS : ADDHP;
attackerHp += addHp;
set_entvar(pevAttacker, var_health, attackerHp > MAXHP ? MAXHP : attackerHp);
if(attackerHp >= MAXHP) {
return;
}
if(addHp > 0.0) {
set_hudmessage(0, 255, 0, 0.6, 0.4, 2, 1.0, 1.5, 0.1, 0.3, -1);
ShowSyncHudMsg(pevAttacker, g_iSyncMsgAddHP, "+%.0f hp", addHp);
}
}
return;
}
#if defined DAMAGER
public CBasePlayer_TakeDamage(victim, inflictor, attacker, Float:damage) {
if(g_isSwitchDmg[attacker] && is_user_connected(attacker) && IsPlayer(attacker) && ent_sees_ent(attacker, victim) && get_member(victim, m_iTeam) != get_member(attacker, m_iTeam) && isUserVip(attacker)) {
static g_iDamage;
g_iDamage = floatround(damage, floatround_floor);
if(g_iDamage > 0) {
static iPos;
iPos = ++g_iPlayerPos[attacker];
if(iPos == sizeof(g_fCoords)) {
iPos = g_iPlayerPos[attacker] = 0;
}
set_hudmessage(200, 100, 100, Float:g_fCoords[iPos][0], Float:g_fCoords[iPos][1], 2, 0.2, 0.5, 0.02, 0.5, -1);
ShowSyncHudMsg(attacker, g_iSyncMsgDmg, "%d^n", g_iDamage);
}
}
}
#endif
public CBasePlayer_Spawn(id) {
if(g_bBlockBonus || !is_user_alive(id)) {
return 0;
}
if(isUserVip(id)) {
g_bUserVip[id] = true;
} else {
return g_bUserVip[id] = false;
}
#if defined VIPAUTOGRENADE
if(g_iRoundCount >= ROUND_NADES) {
rg_give_item(id, "weapon_hegrenade", GT_APPEND);
rg_give_item(id, "weapon_flashbang", GT_APPEND);
rg_give_item(id, "weapon_flashbang", GT_APPEND);
rg_give_item(id, "weapon_smokegrenade", GT_APPEND);
}
#endif
#if defined VIPAUTODEAGLE
if(g_iRoundCount >= ROUND_DEAGLE) {
rg_give_item(id, "weapon_deagle", GT_REPLACE);
rg_set_user_bpammo(id, WEAPON_DEAGLE, 35);
}
#endif
if(g_iRoundCount >= ROUND_ARMOR) {
rg_set_user_armor(id, 100, ARMOR_VESTHELM);
}
if(g_iRoundCount >= ROUND_DEFUSE) {
new TeamName:team = get_member(id, m_iTeam);
if(team == TEAM_CT) {
rg_give_defusekit(id, true);
}
}
#if defined AUTOVIPMENU
return cmdVipMenu(id);
#else
return 0;
#endif
}
public hook_say(id) {
static szMsg[128];
read_args(szMsg, 127);
remove_quotes(szMsg);
if(szMsg[0] != '/') {
return 0;
}
static const szChoosedWP[][] = { "/ak47", "/m4a1", "/famas", "/awp" };
for(new i; i < sizeof szChoosedWP; i++) {
if(!strcmp(szMsg, szChoosedWP[i])) {
if(!isAllowToUse(id)) {
break;
}
if(i > 1 && g_iRoundCount < AWPRND) {
return client_print_color(id, 0, "%s Orajieto e dostapno ot ^3%d ^1rund!", PREFIX, AWPRND);
}
return VipMenuHandler(id, i);
}
}
return 0;
}
public cmdVipMenu(id) {
if(!isAllowToUse(id)) {
return 0;
}
static szMenu[512], iLen, iKey;
iKey = MENU_KEY_0;
#if defined ADMIN_LOADER
new iExp = admin_expired(id);
if(iExp > 0) {
new sysTime = get_systime();
if(iExp - sysTime > 0) {
if((iExp - sysTime) / 86400 > 0) {
iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu: \r[\y%d дн.\r]^n^n", ((iExp - sysTime) / 86400));
} else {
iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu: \r[\y%dч. %dмин.\r]^n^n", ((iExp - sysTime) / 3600), (((iExp - sysTime) / 60) - (((iExp - sysTime) / 3600) * 60)));
}
}
} else if(iExp == 0) {
iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu^n^n");
}
#else
iLen = formatex(szMenu, charsmax(szMenu), "\ySuperVIP Menu^n^n");
#endif
iKey |= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wBezplatno \yAK47^n\r2. \wBezplatno \yM4A1^n\r3. \wBezplatno \yFAMAS^n\");
if(g_iRoundCount < AWPRND) {
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \dBezplatno AWP \r[ot %d rund]^n^n", AWPRND);
} else {
iKey |= MENU_KEY_4;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wBezplatno \yAWP^n\");
}
#if defined FIFTH_ITEM
iKey |= MENU_KEY_5;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \wPokazwane na hitovete \r[\y%s\r]^n^n", g_isSwitchDmg[id] ? "Aktivno" : "Neaktivno");
#endif
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wIzhod");
show_menu(id, iKey, szMenu, -1, "VipMenu");
return PLUGIN_HANDLED;
}
public VipMenuHandler(id, iKey) {
#if defined FIFTH_ITEM
if(iKey > 4 || g_bUseWeapon[id]) {
return 0;
}
#else
if(iKey > 3 || g_bUseWeapon[id]) {
return 0;
}
#endif
switch(iKey) {
case 0..3: {
static const szChoosedBP[] = { 90, 90, 90, 30 };
static const szChoosedWP[][] = { "weapon_ak47", "weapon_m4a1", "weapon_famas", "weapon_awp" };
g_bUseWeapon[id] = true;
return give_item_ex(id, szChoosedWP[iKey], szChoosedBP[iKey]);
}
#if defined FIFTH_ITEM
case 4: {
g_isSwitchDmg[id] = (g_isSwitchDmg[id]) ? 0 : 1;
num_to_str(g_isSwitchDmg[id], g_szText, charsmax(g_szText));
client_cmd(id, "setinfo _damager %s", g_szText);
return cmdVipMenu(id);
}
#endif
}
return PLUGIN_HANDLED;
}
stock give_item_ex(id, currWeaponName[], ammoAmount) {
rg_give_item(id, currWeaponName, GT_REPLACE);
rg_set_user_bpammo(id, rg_get_weapon_info(currWeaponName, WI_ID), ammoAmount);
engclient_cmd(id, currWeaponName);
return PLUGIN_HANDLED;
}
bool:isAllowToUse(id) {
if(!g_bUserVip[id]) {
client_print_color(id, print_team_default, "%s Samo SuperVIP igrachite imat dostap do tazi komanda!", PREFIX);
return false;
}
if(!is_user_alive(id)) {
client_print_color(id, print_team_default, "%s Triabva da si jiv za da polzwash tazi komanda!", PREFIX);
return false;
}
if(!g_iRoundCount) {
client_print_color(id, print_team_default, "%s Tazi komanda e zabranena pyrvite rundove!", PREFIX);
return false;
}
if(g_bUseWeapon[id]) {
client_print_color(id, print_team_default, "%s Veche si wzel orajie tozi rund!", PREFIX);
return false;
}
if(g_iRoundCount < VIPROUND) {
client_print_color(id, print_team_default, "%s Bezplatnite orajiq shte sa dostapni ot ^3%d ^1rund!", PREFIX, VIPROUND);
return false;
}
return true;
}
public cmdSwitchDmg(id) {
if(!isUserVip(id)) {
client_print_color(id, print_team_default, "%s Tazi komanda e samo za SuperVIP igrachi!", PREFIX);
return 0;
}
g_isSwitchDmg[id] = (g_isSwitchDmg[id]) ? 0 : 1;
num_to_str(g_isSwitchDmg[id], g_szText, charsmax(g_szText));
client_cmd(id, "setinfo _damager %s", g_szText);
new szSwitch[20];
format(szSwitch, charsmax(szSwitch), "%s", g_isSwitchDmg[id] ? "Aktivira" : "Deaktivira");
client_print_color(id, print_team_default, "%s Ti uspeshno ^3%s ^1pokazwaneto na hitovete", PREFIX, szSwitch);
return PLUGIN_CONTINUE;
}
stock bool:ent_sees_ent(iEnt, iEnt2)
{
static Float:fEntOrigin[3], Float:fEnt2Origin[3], Float:fResult[3];
entity_get_vector(iEnt, EV_VEC_origin, fEntOrigin);
entity_get_vector(iEnt2, EV_VEC_origin, fEnt2Origin);
return trace_line(iEnt, fEntOrigin, fEnt2Origin, fResult) == iEnt2;
}

След като се отключи и AWP

Може ли да оправите цветовете?
-
TryAgain
Извън линия - Потребител
- Мнения: 142
- Регистриран на: 25 Яну 2017, 16:59
- Се отблагодари: 1 път
- Получена благодарност: 10 пъти
Заявка за редактиране на VIP плъгин
За да смениш от кой рунд да ти е AWP-то го има на ред номер:33
Иначе пробвай така 
Код за потвърждение: Избери целия код
#define AWPRND 5 // С какого round доступны AWP и пулемет

Код за потвърждение: Избери целия код
/*************************************************************************************************
* Возможности:
* 1. Префикс сообщений от плагина
* 2. VipMenu (vipmenu, /vipmenu) - оружия: ak47, m4a1, awp, пулемет.
* 3. Так же работают чат команды: /ak47, /m4a1, /awp, /b51.
* 4. AWP и Пулемет можно использовать с N round (настраивается).
* 5. Не работает на картах awp_, аim_, 35hp, fy_
* 6. Дополнительные HP за убийства (настраивается)
* 7. Автовыдача дигла при спавне (отключаемо), если включено можно выставить с N round (настраивается).
* 8. Автовыдача гранат при спавне (отключаемо), если включено можно выставить с N round (настраивается).
* 9. Выдача брони при спавне с N round (настраивается).
* 10. Выдача дефузов за кт при спавне с N round (настраивается).
* 11. Срок до конда с Admin Loader by Neugomon (отключаемо).
* 12. VIP статус в TAB (отключаемо).
* 13. Сообщение при подключении игрока.
* 14. Звук при заходе вип игрока (отключаемо).
* 15. Дамагер (отключаемо).
* 16. Переключение дамагера (setinfo) по команде в чат /damager
*************************************************************************************************/
#include <amxmodx>
#include <engine>
#include <reapi>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif
/* Конфигурационные defines */
#define VIP_ACCESS ADMIN_IMMUNITY // Флаг доступа VIP (по дефолту флаг "t" ADMIN_LEVEL_H)
#define PREFIX "^1[^4Sector SuperVIP^1]^1" // Префикс перед сообщениями ( ^1 - желтый ^3 - цвет команды ^4 - зеленый )
#define VIPROUND 3 // C какого round можно открыть VIP меню
#define AWPRND 5 // С какого round доступны AWP и пулемет
#define ADDHP_HS 0.0 // Кол-во добавляемого HP за убийство в голову (выставить 0.0 если не надо добавлять, так как закомментировать нельзя)
#define ADDHP 0.0 // Кол-во добавляемого HP за убийство (выставить 0.0 если не надо добавлять, так как закомментировать нельзя)
#define MAXHP 100.0 // Максимальное количество HP
#define VIPAUTODEAGLE // В начале каждого round давать Deagle (закомментируйте если не надо)
#define VIPAUTOGRENADE // Давать в начале каждого round гранаты (закомментируйте если не надо)
#define ROUND_NADES 1 // С какого round давать гранаты (если раскомментировано VIPAUTOGRENADE иначе нет смысла менять работать не будет)
#define ROUND_DEAGLE 1 // С какого round давать deagle (если раскомментировано VIPAUTODEAGLE иначе нет смысла менять работать не будет)
#define ROUND_ARMOR 2 // С какого round давать броню
#define ROUND_DEFUSE 1 // С какого round давать defuse kit
#define AUTOVIPMENU // Автоматически открывать в начале рануда Вип меню (выключено по дефолту)
//#define VIPTAB // Показывать статус VIP в таблице на tab (закомментируйте если не надо)
//#define ADMIN_LOADER // Срок до конца с Admin Loader by Neugomon (закомментируйте если не надо)
//#define SOUND_CONNECT // Звук при заходе вип игрока (раскомментируйте если надо)
#define DAMAGER // дамагер лесенкой (раскомментируйте если надо)
#define FIFTH_ITEM // 5-й пункт в випке переключение дамагера по нажатию (раскомментируйте если надо + раскомментировать DAMAGER)
/* Конфигурационные defines */
#define isUserVip(%0) (get_user_flags(%0) & VIP_ACCESS)
#define isUserVipr(%0) ((get_user_flags(%0) & ADMIN_RESERVATION) || (get_user_flags(%0) & VIP_ACCESS))
#define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers)
#if defined ADMIN_LOADER
native admin_expired(index);
#endif
#if defined DAMAGER
new const Float:g_fCoords[][] = { {0.52, 0.52}, {0.54, 0.54}, {0.56, 0.56}, {0.58, 0.58}, {0.60, 0.60}, {0.62, 0.62} };
new g_iPlayerPos[33];
new g_iSyncMsgDmg;
#endif
new g_iRoundCount;
new bool:g_bUseWeapon[33];
new bool:g_bBlockBonus;
new bool:g_bUserVip[33];
new g_iSyncMsgAddHP;
new g_iMaxPlayers;
new g_bShow = true;
new g_isSwitchDmg[33] = {0, ...};
new g_szText[3] = "";
public plugin_init() {
register_plugin("[ReAPI] Vip System", "1.4.0", "Dager* *.* -G-");
#if defined DAMAGER
register_clcmd("say /damager", "cmdSwitchDmg");
register_clcmd("say_team /damager", "cmdSwitchDmg");
#endif
register_clcmd("say /svipmenu", "cmdVipMenu");
register_clcmd("say_team /svipmenu", "cmdVipMenu");
register_clcmd("svipmenu", "cmdVipMenu");
register_clcmd("say", "hook_say");
register_clcmd("say_team", "hook_say");
#if defined FIFTH_ITEM
register_menucmd(register_menuid("VipMenu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5, "VipMenuHandler");
#else
register_menucmd(register_menuid("VipMenu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "VipMenuHandler");
#endif
RegisterHookChain(RG_CSGameRules_RestartRound, "CSGameRules_RestartRound_Pre", false);
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true);
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true);
#if defined DAMAGER
RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", true);
#endif
new szMapName[32], iMap_Prefix[][] = { "awp_", "aim_", "35hp", "fy_" };
rh_get_mapname(szMapName, charsmax(szMapName));
for(new i; i < sizeof iMap_Prefix; i++) {
if(containi(szMapName, iMap_Prefix[i]) != -1) {
g_bBlockBonus = true;
}
}
#if defined VIPTAB
if(!get_member_game(m_bMapHasVIPSafetyZone)) {
register_message(get_user_msgid("ScoreAttrib"), "msgScoreAttrib");
}
#endif
#if defined DAMAGER
g_iSyncMsgDmg = CreateHudSyncObj();
#endif
g_iSyncMsgAddHP = CreateHudSyncObj();
g_iMaxPlayers = get_member_game(m_nMaxPlayers);
}
#if defined VIPTAB
public msgScoreAttrib() {
if(isUserVipr(get_msg_arg_int(1)) && !get_msg_arg_int(2)) {
set_msg_arg_int(2, ARG_BYTE, (1<<2));
}
}
#endif
public CSGameRules_RestartRound_Pre() {
if(get_member_game(m_bCompleteReset)) {
g_iRoundCount = 0;
}
g_iRoundCount++;
arrayset(g_bUseWeapon, false, sizeof g_bUseWeapon);
}
public client_putinserver(id) {
if(g_bShow) {
get_user_info(id, "_damager", g_szText, charsmax(g_szText));
g_isSwitchDmg[id] = (g_szText[0]) ? str_to_num(g_szText) : 1;
} else {
g_isSwitchDmg[id] = 0;
}
if(!isUserVip(id)) {
return;
}
static szName[32];
get_entvar(id, var_netname, szName, charsmax(szName));
#if defined SOUND_CONNECT
client_cmd(0, "spk buttons/blip1.wav");
#endif
client_print_color(0, print_team_default, "%s ^1%s ^4vleze w servera! ", PREFIX, szName);
}
public CBasePlayer_Killed(pevVictim, pevAttacker) {
if(IsPlayer(pevVictim) && IsPlayer(pevAttacker) && isUserVip(pevAttacker) && pevVictim != pevAttacker) {
static Float:attackerHp, Float:addHp;
attackerHp = Float:get_entvar(pevAttacker, var_health);
addHp = get_member(pevVictim, m_bHeadshotKilled) ? ADDHP_HS : ADDHP;
attackerHp += addHp;
set_entvar(pevAttacker, var_health, attackerHp > MAXHP ? MAXHP : attackerHp);
if(attackerHp >= MAXHP) {
return;
}
if(addHp > 0.0) {
set_hudmessage(0, 255, 0, 0.6, 0.4, 2, 1.0, 1.5, 0.1, 0.3, -1);
ShowSyncHudMsg(pevAttacker, g_iSyncMsgAddHP, "+%.0f hp", addHp);
}
}
return;
}
#if defined DAMAGER
public CBasePlayer_TakeDamage(victim, inflictor, attacker, Float:damage) {
if(g_isSwitchDmg[attacker] && is_user_connected(attacker) && IsPlayer(attacker) && ent_sees_ent(attacker, victim) && get_member(victim, m_iTeam) != get_member(attacker, m_iTeam) && isUserVip(attacker)) {
static g_iDamage;
g_iDamage = floatround(damage, floatround_floor);
if(g_iDamage > 0) {
static iPos;
iPos = ++g_iPlayerPos[attacker];
if(iPos == sizeof(g_fCoords)) {
iPos = g_iPlayerPos[attacker] = 0;
}
set_hudmessage(200, 100, 100, Float:g_fCoords[iPos][0], Float:g_fCoords[iPos][1], 2, 0.2, 0.5, 0.02, 0.5, -1);
ShowSyncHudMsg(attacker, g_iSyncMsgDmg, "%d^n", g_iDamage);
}
}
}
#endif
public CBasePlayer_Spawn(id) {
if(g_bBlockBonus || !is_user_alive(id)) {
return 0;
}
if(isUserVip(id)) {
g_bUserVip[id] = true;
} else {
return g_bUserVip[id] = false;
}
#if defined VIPAUTOGRENADE
if(g_iRoundCount >= ROUND_NADES) {
rg_give_item(id, "weapon_hegrenade", GT_APPEND);
rg_give_item(id, "weapon_flashbang", GT_APPEND);
rg_give_item(id, "weapon_flashbang", GT_APPEND);
rg_give_item(id, "weapon_smokegrenade", GT_APPEND);
}
#endif
#if defined VIPAUTODEAGLE
if(g_iRoundCount >= ROUND_DEAGLE) {
rg_give_item(id, "weapon_deagle", GT_REPLACE);
rg_set_user_bpammo(id, WEAPON_DEAGLE, 35);
}
#endif
if(g_iRoundCount >= ROUND_ARMOR) {
rg_set_user_armor(id, 100, ARMOR_VESTHELM);
}
if(g_iRoundCount >= ROUND_DEFUSE) {
new TeamName:team = get_member(id, m_iTeam);
if(team == TEAM_CT) {
rg_give_defusekit(id, true);
}
}
#if defined AUTOVIPMENU
return cmdVipMenu(id);
#else
return 0;
#endif
}
public hook_say(id) {
static szMsg[128];
read_args(szMsg, 127);
remove_quotes(szMsg);
if(szMsg[0] != '/') {
return 0;
}
static const szChoosedWP[][] = { "/ak47", "/m4a1", "/famas", "/awp" };
for(new i; i < sizeof szChoosedWP; i++) {
if(!strcmp(szMsg, szChoosedWP[i])) {
if(!isAllowToUse(id)) {
break;
}
if(i > 1 && g_iRoundCount < AWPRND) {
return client_print_color(id, 0, "%s Orajieto e dostapno ot ^3%d ^1rund!", PREFIX, AWPRND);
}
return VipMenuHandler(id, i);
}
}
return 0;
}
public cmdVipMenu(id) {
if(!isAllowToUse(id)) {
return 0;
}
static szMenu[512], iLen, iKey;
iKey = MENU_KEY_0;
#if defined ADMIN_LOADER
new iExp = admin_expired(id);
if(iExp > 0) {
new sysTime = get_systime();
if(iExp - sysTime > 0) {
if((iExp - sysTime) / 86400 > 0) {
iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu: \r[\y%d дн.\r]^n^n", ((iExp - sysTime) / 86400));
} else {
iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu: \r[\y%dч. %dмин.\r]^n^n", ((iExp - sysTime) / 3600), (((iExp - sysTime) / 60) - (((iExp - sysTime) / 3600) * 60)));
}
}
} else if(iExp == 0) {
iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu^n^n");
}
#else
iLen = formatex(szMenu, charsmax(szMenu), "\ySuperVIP Menu^n^n");
#endif
iKey |= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wBezplatno \yAK47^n\r2. \wBezplatno \yM4A1^n\r3. \wBezplatno \yFAMAS^n");
if(g_iRoundCount < AWPRND) {
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \dBezplatno AWP \r[ot %d rund]^n^n", AWPRND);
} else {
iKey |= MENU_KEY_4;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wBezplatno \yAWP^n^n");
}
#if defined FIFTH_ITEM
iKey |= MENU_KEY_5;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \wPokazwane na hitovete \r[\y%s\r]^n^n", g_isSwitchDmg[id] ? "Aktivno" : "Neaktivno");
#endif
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y0\r. \wIzhod");
show_menu(id, iKey, szMenu, -1, "VipMenu");
return PLUGIN_HANDLED;
}
public VipMenuHandler(id, iKey) {
#if defined FIFTH_ITEM
if(iKey > 4 || g_bUseWeapon[id]) {
return 0;
}
#else
if(iKey > 3 || g_bUseWeapon[id]) {
return 0;
}
#endif
switch(iKey) {
case 0..3: {
static const szChoosedBP[] = { 90, 90, 90, 30 };
static const szChoosedWP[][] = { "weapon_ak47", "weapon_m4a1", "weapon_famas", "weapon_awp" };
g_bUseWeapon[id] = true;
return give_item_ex(id, szChoosedWP[iKey], szChoosedBP[iKey]);
}
#if defined FIFTH_ITEM
case 4: {
g_isSwitchDmg[id] = (g_isSwitchDmg[id]) ? 0 : 1;
num_to_str(g_isSwitchDmg[id], g_szText, charsmax(g_szText));
client_cmd(id, "setinfo _damager %s", g_szText);
return cmdVipMenu(id);
}
#endif
}
return PLUGIN_HANDLED;
}
stock give_item_ex(id, currWeaponName[], ammoAmount) {
rg_give_item(id, currWeaponName, GT_REPLACE);
rg_set_user_bpammo(id, rg_get_weapon_info(currWeaponName, WI_ID), ammoAmount);
engclient_cmd(id, currWeaponName);
return PLUGIN_HANDLED;
}
bool:isAllowToUse(id) {
if(!g_bUserVip[id]) {
client_print_color(id, print_team_default, "%s Samo SuperVIP igrachite imat dostap do tazi komanda!", PREFIX);
return false;
}
if(!is_user_alive(id)) {
client_print_color(id, print_team_default, "%s Triabva da si jiv za da polzwash tazi komanda!", PREFIX);
return false;
}
if(!g_iRoundCount) {
client_print_color(id, print_team_default, "%s Tazi komanda e zabranena pyrvite rundove!", PREFIX);
return false;
}
if(g_bUseWeapon[id]) {
client_print_color(id, print_team_default, "%s Veche si wzel orajie tozi rund!", PREFIX);
return false;
}
if(g_iRoundCount < VIPROUND) {
client_print_color(id, print_team_default, "%s Bezplatnite orajiq shte sa dostapni ot ^3%d ^1rund!", PREFIX, VIPROUND);
return false;
}
return true;
}
public cmdSwitchDmg(id) {
if(!isUserVip(id)) {
client_print_color(id, print_team_default, "%s Tazi komanda e samo za SuperVIP igrachi!", PREFIX);
return 0;
}
g_isSwitchDmg[id] = (g_isSwitchDmg[id]) ? 0 : 1;
num_to_str(g_isSwitchDmg[id], g_szText, charsmax(g_szText));
client_cmd(id, "setinfo _damager %s", g_szText);
new szSwitch[20];
format(szSwitch, charsmax(szSwitch), "%s", g_isSwitchDmg[id] ? "Aktivira" : "Deaktivira");
client_print_color(id, print_team_default, "%s Ti uspeshno ^3%s ^1pokazwaneto na hitovete", PREFIX, szSwitch);
return PLUGIN_CONTINUE;
}
stock bool:ent_sees_ent(iEnt, iEnt2)
{
static Float:fEntOrigin[3], Float:fEnt2Origin[3], Float:fResult[3];
entity_get_vector(iEnt, EV_VEC_origin, fEntOrigin);
entity_get_vector(iEnt2, EV_VEC_origin, fEnt2Origin);
return trace_line(iEnt, fEntOrigin, fEnt2Origin, fResult) == iEnt2;
}
-
bruttarazza
Извън линия - Потребител
- Мнения: 10
- Регистриран на: 18 Окт 2020, 19:51
- Се отблагодари: 2 пъти
- Получена благодарност: 1 път
Заявка за редактиране на VIP плъгин
Много ти благодаря, видях си грешката, която се дължи на бързане.. На 2рия ред, където е else-a вместо 4, бях сложил 5.TryAgain написа: ↑27 Ное 2020, 06:17За да смениш от кой рунд да ти е AWP-то го има на ред номер:33Иначе пробвай такаКод за потвърждение: Избери целия код
#define AWPRND 5 // С какого round доступны AWP и пулемет
Код за потвърждение: Избери целия код
/************************************************************************************************* * Возможности: * 1. Префикс сообщений от плагина * 2. VipMenu (vipmenu, /vipmenu) - оружия: ak47, m4a1, awp, пулемет. * 3. Так же работают чат команды: /ak47, /m4a1, /awp, /b51. * 4. AWP и Пулемет можно использовать с N round (настраивается). * 5. Не работает на картах awp_, аim_, 35hp, fy_ * 6. Дополнительные HP за убийства (настраивается) * 7. Автовыдача дигла при спавне (отключаемо), если включено можно выставить с N round (настраивается). * 8. Автовыдача гранат при спавне (отключаемо), если включено можно выставить с N round (настраивается). * 9. Выдача брони при спавне с N round (настраивается). * 10. Выдача дефузов за кт при спавне с N round (настраивается). * 11. Срок до конда с Admin Loader by Neugomon (отключаемо). * 12. VIP статус в TAB (отключаемо). * 13. Сообщение при подключении игрока. * 14. Звук при заходе вип игрока (отключаемо). * 15. Дамагер (отключаемо). * 16. Переключение дамагера (setinfo) по команде в чат /damager *************************************************************************************************/ #include <amxmodx> #include <engine> #include <reapi> #if AMXX_VERSION_NUM < 183 #include <colorchat> #endif /* Конфигурационные defines */ #define VIP_ACCESS ADMIN_IMMUNITY // Флаг доступа VIP (по дефолту флаг "t" ADMIN_LEVEL_H) #define PREFIX "^1[^4Sector SuperVIP^1]^1" // Префикс перед сообщениями ( ^1 - желтый ^3 - цвет команды ^4 - зеленый ) #define VIPROUND 3 // C какого round можно открыть VIP меню #define AWPRND 5 // С какого round доступны AWP и пулемет #define ADDHP_HS 0.0 // Кол-во добавляемого HP за убийство в голову (выставить 0.0 если не надо добавлять, так как закомментировать нельзя) #define ADDHP 0.0 // Кол-во добавляемого HP за убийство (выставить 0.0 если не надо добавлять, так как закомментировать нельзя) #define MAXHP 100.0 // Максимальное количество HP #define VIPAUTODEAGLE // В начале каждого round давать Deagle (закомментируйте если не надо) #define VIPAUTOGRENADE // Давать в начале каждого round гранаты (закомментируйте если не надо) #define ROUND_NADES 1 // С какого round давать гранаты (если раскомментировано VIPAUTOGRENADE иначе нет смысла менять работать не будет) #define ROUND_DEAGLE 1 // С какого round давать deagle (если раскомментировано VIPAUTODEAGLE иначе нет смысла менять работать не будет) #define ROUND_ARMOR 2 // С какого round давать броню #define ROUND_DEFUSE 1 // С какого round давать defuse kit #define AUTOVIPMENU // Автоматически открывать в начале рануда Вип меню (выключено по дефолту) //#define VIPTAB // Показывать статус VIP в таблице на tab (закомментируйте если не надо) //#define ADMIN_LOADER // Срок до конца с Admin Loader by Neugomon (закомментируйте если не надо) //#define SOUND_CONNECT // Звук при заходе вип игрока (раскомментируйте если надо) #define DAMAGER // дамагер лесенкой (раскомментируйте если надо) #define FIFTH_ITEM // 5-й пункт в випке переключение дамагера по нажатию (раскомментируйте если надо + раскомментировать DAMAGER) /* Конфигурационные defines */ #define isUserVip(%0) (get_user_flags(%0) & VIP_ACCESS) #define isUserVipr(%0) ((get_user_flags(%0) & ADMIN_RESERVATION) || (get_user_flags(%0) & VIP_ACCESS)) #define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers) #if defined ADMIN_LOADER native admin_expired(index); #endif #if defined DAMAGER new const Float:g_fCoords[][] = { {0.52, 0.52}, {0.54, 0.54}, {0.56, 0.56}, {0.58, 0.58}, {0.60, 0.60}, {0.62, 0.62} }; new g_iPlayerPos[33]; new g_iSyncMsgDmg; #endif new g_iRoundCount; new bool:g_bUseWeapon[33]; new bool:g_bBlockBonus; new bool:g_bUserVip[33]; new g_iSyncMsgAddHP; new g_iMaxPlayers; new g_bShow = true; new g_isSwitchDmg[33] = {0, ...}; new g_szText[3] = ""; public plugin_init() { register_plugin("[ReAPI] Vip System", "1.4.0", "Dager* *.* -G-"); #if defined DAMAGER register_clcmd("say /damager", "cmdSwitchDmg"); register_clcmd("say_team /damager", "cmdSwitchDmg"); #endif register_clcmd("say /svipmenu", "cmdVipMenu"); register_clcmd("say_team /svipmenu", "cmdVipMenu"); register_clcmd("svipmenu", "cmdVipMenu"); register_clcmd("say", "hook_say"); register_clcmd("say_team", "hook_say"); #if defined FIFTH_ITEM register_menucmd(register_menuid("VipMenu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5, "VipMenuHandler"); #else register_menucmd(register_menuid("VipMenu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "VipMenuHandler"); #endif RegisterHookChain(RG_CSGameRules_RestartRound, "CSGameRules_RestartRound_Pre", false); RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true); RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", true); #if defined DAMAGER RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", true); #endif new szMapName[32], iMap_Prefix[][] = { "awp_", "aim_", "35hp", "fy_" }; rh_get_mapname(szMapName, charsmax(szMapName)); for(new i; i < sizeof iMap_Prefix; i++) { if(containi(szMapName, iMap_Prefix[i]) != -1) { g_bBlockBonus = true; } } #if defined VIPTAB if(!get_member_game(m_bMapHasVIPSafetyZone)) { register_message(get_user_msgid("ScoreAttrib"), "msgScoreAttrib"); } #endif #if defined DAMAGER g_iSyncMsgDmg = CreateHudSyncObj(); #endif g_iSyncMsgAddHP = CreateHudSyncObj(); g_iMaxPlayers = get_member_game(m_nMaxPlayers); } #if defined VIPTAB public msgScoreAttrib() { if(isUserVipr(get_msg_arg_int(1)) && !get_msg_arg_int(2)) { set_msg_arg_int(2, ARG_BYTE, (1<<2)); } } #endif public CSGameRules_RestartRound_Pre() { if(get_member_game(m_bCompleteReset)) { g_iRoundCount = 0; } g_iRoundCount++; arrayset(g_bUseWeapon, false, sizeof g_bUseWeapon); } public client_putinserver(id) { if(g_bShow) { get_user_info(id, "_damager", g_szText, charsmax(g_szText)); g_isSwitchDmg[id] = (g_szText[0]) ? str_to_num(g_szText) : 1; } else { g_isSwitchDmg[id] = 0; } if(!isUserVip(id)) { return; } static szName[32]; get_entvar(id, var_netname, szName, charsmax(szName)); #if defined SOUND_CONNECT client_cmd(0, "spk buttons/blip1.wav"); #endif client_print_color(0, print_team_default, "%s ^1%s ^4vleze w servera! ", PREFIX, szName); } public CBasePlayer_Killed(pevVictim, pevAttacker) { if(IsPlayer(pevVictim) && IsPlayer(pevAttacker) && isUserVip(pevAttacker) && pevVictim != pevAttacker) { static Float:attackerHp, Float:addHp; attackerHp = Float:get_entvar(pevAttacker, var_health); addHp = get_member(pevVictim, m_bHeadshotKilled) ? ADDHP_HS : ADDHP; attackerHp += addHp; set_entvar(pevAttacker, var_health, attackerHp > MAXHP ? MAXHP : attackerHp); if(attackerHp >= MAXHP) { return; } if(addHp > 0.0) { set_hudmessage(0, 255, 0, 0.6, 0.4, 2, 1.0, 1.5, 0.1, 0.3, -1); ShowSyncHudMsg(pevAttacker, g_iSyncMsgAddHP, "+%.0f hp", addHp); } } return; } #if defined DAMAGER public CBasePlayer_TakeDamage(victim, inflictor, attacker, Float:damage) { if(g_isSwitchDmg[attacker] && is_user_connected(attacker) && IsPlayer(attacker) && ent_sees_ent(attacker, victim) && get_member(victim, m_iTeam) != get_member(attacker, m_iTeam) && isUserVip(attacker)) { static g_iDamage; g_iDamage = floatround(damage, floatround_floor); if(g_iDamage > 0) { static iPos; iPos = ++g_iPlayerPos[attacker]; if(iPos == sizeof(g_fCoords)) { iPos = g_iPlayerPos[attacker] = 0; } set_hudmessage(200, 100, 100, Float:g_fCoords[iPos][0], Float:g_fCoords[iPos][1], 2, 0.2, 0.5, 0.02, 0.5, -1); ShowSyncHudMsg(attacker, g_iSyncMsgDmg, "%d^n", g_iDamage); } } } #endif public CBasePlayer_Spawn(id) { if(g_bBlockBonus || !is_user_alive(id)) { return 0; } if(isUserVip(id)) { g_bUserVip[id] = true; } else { return g_bUserVip[id] = false; } #if defined VIPAUTOGRENADE if(g_iRoundCount >= ROUND_NADES) { rg_give_item(id, "weapon_hegrenade", GT_APPEND); rg_give_item(id, "weapon_flashbang", GT_APPEND); rg_give_item(id, "weapon_flashbang", GT_APPEND); rg_give_item(id, "weapon_smokegrenade", GT_APPEND); } #endif #if defined VIPAUTODEAGLE if(g_iRoundCount >= ROUND_DEAGLE) { rg_give_item(id, "weapon_deagle", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_DEAGLE, 35); } #endif if(g_iRoundCount >= ROUND_ARMOR) { rg_set_user_armor(id, 100, ARMOR_VESTHELM); } if(g_iRoundCount >= ROUND_DEFUSE) { new TeamName:team = get_member(id, m_iTeam); if(team == TEAM_CT) { rg_give_defusekit(id, true); } } #if defined AUTOVIPMENU return cmdVipMenu(id); #else return 0; #endif } public hook_say(id) { static szMsg[128]; read_args(szMsg, 127); remove_quotes(szMsg); if(szMsg[0] != '/') { return 0; } static const szChoosedWP[][] = { "/ak47", "/m4a1", "/famas", "/awp" }; for(new i; i < sizeof szChoosedWP; i++) { if(!strcmp(szMsg, szChoosedWP[i])) { if(!isAllowToUse(id)) { break; } if(i > 1 && g_iRoundCount < AWPRND) { return client_print_color(id, 0, "%s Orajieto e dostapno ot ^3%d ^1rund!", PREFIX, AWPRND); } return VipMenuHandler(id, i); } } return 0; } public cmdVipMenu(id) { if(!isAllowToUse(id)) { return 0; } static szMenu[512], iLen, iKey; iKey = MENU_KEY_0; #if defined ADMIN_LOADER new iExp = admin_expired(id); if(iExp > 0) { new sysTime = get_systime(); if(iExp - sysTime > 0) { if((iExp - sysTime) / 86400 > 0) { iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu: \r[\y%d дн.\r]^n^n", ((iExp - sysTime) / 86400)); } else { iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu: \r[\y%dч. %dмин.\r]^n^n", ((iExp - sysTime) / 3600), (((iExp - sysTime) / 60) - (((iExp - sysTime) / 3600) * 60))); } } } else if(iExp == 0) { iLen = formatex(szMenu, charsmax(szMenu), "\yVipMenu^n^n"); } #else iLen = formatex(szMenu, charsmax(szMenu), "\ySuperVIP Menu^n^n"); #endif iKey |= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3; iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wBezplatno \yAK47^n\r2. \wBezplatno \yM4A1^n\r3. \wBezplatno \yFAMAS^n"); if(g_iRoundCount < AWPRND) { iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \dBezplatno AWP \r[ot %d rund]^n^n", AWPRND); } else { iKey |= MENU_KEY_4; iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wBezplatno \yAWP^n^n"); } #if defined FIFTH_ITEM iKey |= MENU_KEY_5; iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \wPokazwane na hitovete \r[\y%s\r]^n^n", g_isSwitchDmg[id] ? "Aktivno" : "Neaktivno"); #endif formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y0\r. \wIzhod"); show_menu(id, iKey, szMenu, -1, "VipMenu"); return PLUGIN_HANDLED; } public VipMenuHandler(id, iKey) { #if defined FIFTH_ITEM if(iKey > 4 || g_bUseWeapon[id]) { return 0; } #else if(iKey > 3 || g_bUseWeapon[id]) { return 0; } #endif switch(iKey) { case 0..3: { static const szChoosedBP[] = { 90, 90, 90, 30 }; static const szChoosedWP[][] = { "weapon_ak47", "weapon_m4a1", "weapon_famas", "weapon_awp" }; g_bUseWeapon[id] = true; return give_item_ex(id, szChoosedWP[iKey], szChoosedBP[iKey]); } #if defined FIFTH_ITEM case 4: { g_isSwitchDmg[id] = (g_isSwitchDmg[id]) ? 0 : 1; num_to_str(g_isSwitchDmg[id], g_szText, charsmax(g_szText)); client_cmd(id, "setinfo _damager %s", g_szText); return cmdVipMenu(id); } #endif } return PLUGIN_HANDLED; } stock give_item_ex(id, currWeaponName[], ammoAmount) { rg_give_item(id, currWeaponName, GT_REPLACE); rg_set_user_bpammo(id, rg_get_weapon_info(currWeaponName, WI_ID), ammoAmount); engclient_cmd(id, currWeaponName); return PLUGIN_HANDLED; } bool:isAllowToUse(id) { if(!g_bUserVip[id]) { client_print_color(id, print_team_default, "%s Samo SuperVIP igrachite imat dostap do tazi komanda!", PREFIX); return false; } if(!is_user_alive(id)) { client_print_color(id, print_team_default, "%s Triabva da si jiv za da polzwash tazi komanda!", PREFIX); return false; } if(!g_iRoundCount) { client_print_color(id, print_team_default, "%s Tazi komanda e zabranena pyrvite rundove!", PREFIX); return false; } if(g_bUseWeapon[id]) { client_print_color(id, print_team_default, "%s Veche si wzel orajie tozi rund!", PREFIX); return false; } if(g_iRoundCount < VIPROUND) { client_print_color(id, print_team_default, "%s Bezplatnite orajiq shte sa dostapni ot ^3%d ^1rund!", PREFIX, VIPROUND); return false; } return true; } public cmdSwitchDmg(id) { if(!isUserVip(id)) { client_print_color(id, print_team_default, "%s Tazi komanda e samo za SuperVIP igrachi!", PREFIX); return 0; } g_isSwitchDmg[id] = (g_isSwitchDmg[id]) ? 0 : 1; num_to_str(g_isSwitchDmg[id], g_szText, charsmax(g_szText)); client_cmd(id, "setinfo _damager %s", g_szText); new szSwitch[20]; format(szSwitch, charsmax(szSwitch), "%s", g_isSwitchDmg[id] ? "Aktivira" : "Deaktivira"); client_print_color(id, print_team_default, "%s Ti uspeshno ^3%s ^1pokazwaneto na hitovete", PREFIX, szSwitch); return PLUGIN_CONTINUE; } stock bool:ent_sees_ent(iEnt, iEnt2) { static Float:fEntOrigin[3], Float:fEnt2Origin[3], Float:fResult[3]; entity_get_vector(iEnt, EV_VEC_origin, fEntOrigin); entity_get_vector(iEnt2, EV_VEC_origin, fEnt2Origin); return trace_line(iEnt, fEntOrigin, fEnt2Origin, fResult) == iEnt2; }
Код за потвърждение: Избери целия код
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \dBezplatno AWP \r[ot %d rund]^n^n", AWPRND);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \wBezplatno \yAWP^n^n");
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 1 Отговори
- 514 Преглеждания
-
Последно мнение от mi0
-
- 4 Отговори
- 1205 Преглеждания
-
Последно мнение от summertime vibes
-
- 5 Отговори
- 1091 Преглеждания
-
Последно мнение от Irie
-
- 3 Отговори
- 237 Преглеждания
-
Последно мнение от OciXCrom
-
- 2 Отговори
- 1125 Преглеждания
-
Последно мнение от a4tech1999
-
- 4 Отговори
- 898 Преглеждания
-
Последно мнение от mBFF-TheFucKBG
-
- 4 Отговори
- 600 Преглеждания
-
Последно мнение от iv69
Кой е на линия
Потребители разглеждащи този форум: Bing [Bot], Majestic-12 [Bot] и 12 госта