Я хочу, чтобы меню открывалось после завершения «mp_freezetime», кто может помочь?
Вложения
-
5.8 KB Просмотры: 22
RegisterHookChain(RG_CSGameRules_OnRoundFreezeEnd, "@FreezeTime_End");
@FreezeTime_End(){
for(new i= 0; i < get_maxplayers(); i++){
ShowMenu(i);
}
}
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <reapi>
#pragma semicolon 1
new const MenuKey = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<9);
enum _:cvars { GIVE_ITEMS, WEAPONSRND };
static sItems[10];
new iPistol[MAX_CLIENTS+1], bool:bUsePistol, bool:bUseWeapon[MAX_CLIENTS+1];
new iRound = 0;
new pCvar[cvars], pCvarCfg[cvars];
native admin_expired(id);
//#define ADMIN_LOADER
public plugin_init()
{
register_plugin("[ReVIP] VIP Menu", "1.0", "Author");
register_dictionary("vipsystem.txt");
pCvar[GIVE_ITEMS] = register_cvar("give_items", "adhp");
pCvar[WEAPONSRND] = register_cvar("weapons_rnd", "2");
register_menucmd(register_menuid("VIP Menu"), MenuKey, "MenuHandler");
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true);
RegisterHookChain(RG_CSGameRules_RestartRound, "CSGameRules_RestartRound");
RegisterHookChain(RG_CSGameRules_OnRoundFreezeEnd, "@FreezeTime_End");
}
public plugin_cfg()
{
get_pcvar_string(pCvar[GIVE_ITEMS], sItems, charsmax(sItems)); trim(sItems);
pCvarCfg[WEAPONSRND] = get_pcvar_num(pCvar[WEAPONSRND]);
}
@FreezeTime_End(){
for(new i= 0; i < get_maxplayers(); i++){
ShowMenu(i);
}
}
public CSGameRules_RestartRound()
{
if(get_member_game(m_bCompleteReset))
{
iRound = 0;
}
iRound++;
}
public CBasePlayer_Spawn(const id)
{
if(!is_user_connected(id) || !is_user_alive(id))
return;
if(iRound > pCvarCfg[WEAPONSRND])
{
for(new i, str_len = strlen(sItems); i < str_len ; i++)
{
switch(sItems[i])
{
case 'a':
{
rg_set_user_armor(id, 100, ARMOR_VESTHELM);
}
case 'd':
{
new TeamName:team = get_member(id, m_iTeam);
if(team == TEAM_CT)
{
rg_give_defusekit (id, true);
}
}
case 'h':
{
rg_give_item(id, "weapon_hegrenade", GT_APPEND);
rg_give_item(id, "weapon_smokegrenade", GT_APPEND);
}
case 'p':
{
switch(iPistol[id])
{
case 0: { rg_give_item(id, "weapon_deagle", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_DEAGLE, 35); }
case 1: { rg_give_item(id, "weapon_usp", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_USP, 100); }
case 2: { rg_give_item(id, "weapon_glock18", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_GLOCK18, 120); }
}
bUsePistol = true;
}
}
}
ShowMenu(id);
}
}
public ShowMenu(id)
{
new szMenu[512], key; key = MENU_KEY_0;
new iLen, szName[32]; get_entvar(id, var_netname, szName, charsmax(szName));
iLen = formatex(szMenu, charsmax(szMenu), "\r%L \w[\d%L\w]^n\w%L^n", LANG_SERVER, "MENU_NAME", LANG_SERVER, "NAME_SERVER", LANG_SERVER, "WELCOME", szName);
#if defined ADMIN_LOADER
new exp = admin_expired(id);
if(exp > 0)
{
new sys = get_systime();
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L^n^n", LANG_SERVER, "VIP_EXPIRED", LANG_SERVER, ((exp - sys) / 86400 > 0) ? "VIP_DAYS" : "VIP_DAY", (exp - sys) / 86400);
}
else if(exp == 0) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L^n^n", LANG_SERVER, "VIP_EXPIRED_PRMANENT");
#else
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
#endif
new szUseWpn[2]; formatex(szUseWpn, charsmax(szUseWpn), "%s", bUseWeapon[id] ? "d" : "w");
if(iRound < pCvarCfg[WEAPONSRND])
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \%s%L^n\r2. \%s%L^n\r3. \%s%L^n", szUseWpn, LANG_SERVER, "AK47", szUseWpn, LANG_SERVER, "M4A1", szUseWpn, LANG_SERVER, "FAMAS");
}
else
{
key |= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \%s%L^n\r2. \%s%L^n\r3. \%s%L^n", szUseWpn, LANG_SERVER, "AK47", szUseWpn, LANG_SERVER, "M4A1", szUseWpn, LANG_SERVER, "FAMAS");
}
if(iRound < pCvarCfg[WEAPONSRND])
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \%s%L^n", szUseWpn, LANG_SERVER, "SCOUT");
}
else
{
key |= MENU_KEY_4;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \%s%L^n", szUseWpn, LANG_SERVER, "SCOUT");
}
if(iRound < pCvarCfg[WEAPONSRND])
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \%s%L^n", szUseWpn, LANG_SERVER, "AWP");
}
else
{
key |= MENU_KEY_5;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \%s%L^n", szUseWpn, LANG_SERVER, "AWP");
}
if(bUsePistol)
{
key |= MENU_KEY_6;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6. %L \r[\w%s\r]^n", LANG_SERVER, "PISTOL", iPistol[id] == 0 ? "Deagle" : iPistol[id] == 1 ? "USP" : "Glock");
}
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r0. %L", LANG_SERVER, "EXIT");
set_member(id, m_iMenu, Menu_OFF);
return show_menu(id, key, szMenu, -1, "VIP Menu");
}
public MenuHandler(id, key)
{
if(!cs_get_user_buyzone(id))
return PLUGIN_HANDLED;
if(!is_user_alive(id))
return PLUGIN_HANDLED;
if(key <= 4)
{
if(iRound < pCvarCfg[WEAPONSRND])
{
return client_print_color(id, 0, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "PISTOLS_ROUND");
}
if(bUseWeapon[id])
{
return client_print_color(id, 0, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "ALREDY_WEAPON_RND");
}
bUseWeapon[id] = false;
static const szChoosedBP[] = { 90, 90, 90, 30, 30 };
static const szChoosedWP[][] = { "weapon_ak47", "weapon_m4a1", "weapon_famas", "weapon_scout", "weapon_awp"};
return give_items(id, szChoosedWP[key], szChoosedBP[key]);
}
else if(key == 5)
{
GivePistol(id);
}
return PLUGIN_HANDLED;
}
public GivePistol(id)
{
iPistol[id] >= 2 ? (iPistol[id] = 0) : iPistol[id]++;
ShowMenu(id);
return PLUGIN_HANDLED;
}
public give_items(id, currWeaponName[], ammoAmount)
{
rg_give_item(id, currWeaponName, GT_DROP_AND_REPLACE );
rg_set_user_bpammo(id, rg_get_weapon_info(currWeaponName, WI_ID), ammoAmount);
engclient_cmd(id, currWeaponName);
return PLUGIN_HANDLED;
}
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <reapi>
#pragma semicolon 1
new const MenuKey = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<9);
enum _:cvars { GIVE_ITEMS, WEAPONSRND };
static sItems[10];
new iPistol[MAX_CLIENTS+1], bool:bUsePistol, bool:bUseWeapon[MAX_CLIENTS+1];
new iRound = 0;
new pCvar[cvars], pCvarCfg[cvars];
native admin_expired(id);
//#define ADMIN_LOADER
public plugin_init()
{
register_plugin("[ReVIP] VIP Menu", "1.0", "Author");
register_dictionary("vipsystem.txt");
pCvar[GIVE_ITEMS] = register_cvar("give_items", "adhp");
pCvar[WEAPONSRND] = register_cvar("weapons_rnd", "2");
register_menucmd(register_menuid("VIP Menu"), MenuKey, "MenuHandler");
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true);
RegisterHookChain(RG_CSGameRules_RestartRound, "CSGameRules_RestartRound");
RegisterHookChain(RG_CSGameRules_OnRoundFreezeEnd, "@FreezeTime_End");
}
public plugin_cfg()
{
get_pcvar_string(pCvar[GIVE_ITEMS], sItems, charsmax(sItems)); trim(sItems);
pCvarCfg[WEAPONSRND] = get_pcvar_num(pCvar[WEAPONSRND]);
}
@FreezeTime_End()
{
for (new i = 1; i <= get_maxplayers(); i++) {
if (is_user_connected(i) && is_user_alive(i)) {
ShowMenu(i);
}
}
}
public CSGameRules_RestartRound()
{
if(get_member_game(m_bCompleteReset)) {
iRound = 0;
}
iRound++;
}
public CBasePlayer_Spawn(const id)
{
if (!is_user_connected(id) || !is_user_alive(id))
return;
if (iRound > pCvarCfg[WEAPONSRND])
{
for (new i, str_len = strlen(sItems); i < str_len ; i++)
{
switch (sItems[i])
{
case 'a':
{
rg_set_user_armor(id, 100, ARMOR_VESTHELM);
}
case 'd':
{
new TeamName:team = get_member(id, m_iTeam);
if (team == TEAM_CT)
{
rg_give_defusekit(id, true);
}
}
case 'h':
{
rg_give_item(id, "weapon_hegrenade", GT_APPEND);
rg_give_item(id, "weapon_smokegrenade", GT_APPEND);
}
case 'p':
{
switch (iPistol[id])
{
case 0: { rg_give_item(id, "weapon_deagle", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_DEAGLE, 35); }
case 1: { rg_give_item(id, "weapon_usp", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_USP, 100); }
case 2: { rg_give_item(id, "weapon_glock18", GT_REPLACE); rg_set_user_bpammo(id, WEAPON_GLOCK18, 120); }
}
bUsePistol = true;
}
}
}
if (is_user_alive(id)) {
ShowMenu(id);
}
}
}
public ShowMenu(id)
{
if (!is_user_connected(id) || !is_user_alive(id))
return PLUGIN_HANDLED;
new szMenu[512], key; key = MENU_KEY_0;
new iLen, szName[32]; get_entvar(id, var_netname, szName, charsmax(szName));
iLen = formatex(szMenu, charsmax(szMenu), "\r%L \w[\d%L\w]^n\w%L^n", LANG_SERVER, "MENU_NAME", LANG_SERVER, "NAME_SERVER", LANG_SERVER, "WELCOME", szName);
#if defined ADMIN_LOADER
new exp = admin_expired(id);
if(exp > 0)
{
new sys = get_systime();
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L^n^n", LANG_SERVER, "VIP_EXPIRED", LANG_SERVER, ((exp - sys) / 86400 > 0) ? "VIP_DAYS" : "VIP_DAY", (exp - sys) / 86400);
}
else if(exp == 0) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "%L^n^n", LANG_SERVER, "VIP_EXPIRED_PRMANENT");
#else
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n");
#endif
new szUseWpn[2]; formatex(szUseWpn, charsmax(szUseWpn), "%s", bUseWeapon[id] ? "d" : "w");
if(iRound < pCvarCfg[WEAPONSRND])
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \%s%L^n\r2. \%s%L^n\r3. \%s%L^n", szUseWpn, LANG_SERVER, "AK47", szUseWpn, LANG_SERVER, "M4A1", szUseWpn, LANG_SERVER, "FAMAS");
}
else
{
key |= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \%s%L^n\r2. \%s%L^n\r3. \%s%L^n", szUseWpn, LANG_SERVER, "AK47", szUseWpn, LANG_SERVER, "M4A1", szUseWpn, LANG_SERVER, "FAMAS");
}
if(iRound < pCvarCfg[WEAPONSRND])
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \%s%L^n", szUseWpn, LANG_SERVER, "SCOUT");
}
else
{
key |= MENU_KEY_4;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4. \%s%L^n", szUseWpn, LANG_SERVER, "SCOUT");
}
if(iRound < pCvarCfg[WEAPONSRND])
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \%s%L^n", szUseWpn, LANG_SERVER, "AWP");
}
else
{
key |= MENU_KEY_5;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \%s%L^n", szUseWpn, LANG_SERVER, "AWP");
}
if(bUsePistol)
{
key |= MENU_KEY_6;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6. %L \r[\w%s\r]^n", LANG_SERVER, "PISTOL", iPistol[id] == 0 ? "Deagle" : iPistol[id] == 1 ? "USP" : "Glock");
}
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\r0. %L", LANG_SERVER, "EXIT");
set_member(id, m_iMenu, Menu_OFF);
show_menu(id, key, szMenu, -1, "VIP Menu");
return PLUGIN_HANDLED;
}
public MenuHandler(id, key)
{
if (!cs_get_user_buyzone(id) || !is_user_alive(id))
return PLUGIN_HANDLED;
if (key <= 4)
{
if (iRound < pCvarCfg[WEAPONSRND])
{
return client_print_color(id, 0, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "PISTOLS_ROUND");
}
if (bUseWeapon[id])
{
return client_print_color(id, 0, "%L %L", LANG_SERVER, "CHAT_TAG", LANG_SERVER, "ALREDY_WEAPON_RND");
}
bUseWeapon[id] = true;
static const szChoosedBP[] = { 90, 90, 90, 30, 30 };
static const szChoosedWP[][] = { "weapon_ak47", "weapon_m4a1", "weapon_famas", "weapon_scout", "weapon_awp"};
return give_items(id, szChoosedWP[key], szChoosedBP[key]);
}
else if (key == 5)
{
GivePistol(id);
}
return PLUGIN_HANDLED;
}
public GivePistol(id)
{
iPistol[id] >= 2 ? (iPistol[id] = 0) : iPistol[id]++;
ShowMenu(id);
return PLUGIN_HANDLED;
}
public give_items(id, currWeaponName[], ammoAmount)
{
rg_give_item(id, currWeaponName, GT_DROP_AND_REPLACE );
rg_set_user_bpammo(id, rg_get_weapon_info(currWeaponName, WI_ID), ammoAmount);
engclient_cmd(id, currWeaponName);
return PLUGIN_HANDLED;
}
Я не знаю и не умею писать этот код...нет нужды проверять подключен ли игрок, если он живойКод:@FreezeTime_End() { for (new i = 1; i <= MaxClients; i++) { if (is_user_alive(i)) { ShowMenu(i); } } }
@skripaura,
Спасибо, ваш вариант работает, но иногда не дает выбрать оружие..
cs_get_user_buyzone