Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

IDEAL_VIP + buytime

, Использование VIP по времени.
Статус пользователя foxy
сообщение 27.12.2016, 1:56
Сообщение #1
Стаж: 8 лет 2 месяца

Сообщений: 13
Благодарностей: 1
Полезность: 0

Здравствуйте, нужна ваша помощь в реализации задумки.
Идея такова, что нужно сделать чтобы по мимо использования плагина 1 раз за раунд, можно было сделать ограничение по времени, то есть с применением значения mp_buytime - к примеру 15 секунд.
Возможно ли это сделать? Помогите пожалуйста.

Прикрепленный файл  IDEAL_VIP.sma ( 17,26 килобайт ) Кол-во скачиваний: 16


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Sorokin
сообщение 30.12.2016, 21:52
Сообщение #2
Стаж: 7 лет 3 месяца

Сообщений: 427
Благодарности: выкл.

foxy, Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <dhudmessage>

#define PLUGIN "IDEAL VIP by Ba/lePa & Wikiname"
#define VERSION "3.2.5"
#define AUTHOR "Ba/lePa | Remake by Wikiname"

#define VIP_TAG (1<<2) // vip в таблицу
#define vip_flag ADMIN_LEVEL_H // флаг доступа
//#define EXP_SHOW // раскомментируйте чтобы показать срок випки

#define music // Если звук при входе админа не нужен, то поставьте // перед #define

#define MAX_TEXT_LENGTH 200
#define MAX_NAME_LENGTH 40

#pragma semicolon 1

new bool:g_bBlockMap;

new Float: g_BuyTime, bool: g_BuyTimeEnd; // для времени закупки
new g_Round, g_iWeapon[33], g_iVip ;
new g_iPlayerBomb[33] = false;
new cvar_connect, Float: cvar_x, Float: cvar_y;
new cvar_prefix;
new cvar_round, cvar_open, cvar_show, cvar_chat, cvar_pistols, cvar_funk, cvar_tab;
new Float: cvar_health, Float: cvar_health_head, Float: cvar_health_max;
new cvar_money, cvar_money_head;
new cvar_music;
new cvar_awplimit;
#if defined EXP_SHOW
native admin_expired(index);
#endif
new vip_opened[33];
new g_iMaxPlayers = 0;
new msgSayText;
new g_iPistols[6] = {CSW_USP, CSW_GLOCK18, CSW_ELITE, CSW_FIVESEVEN, CSW_P228, CSW_DEAGLE};
new bool: g_Chosen[33] = false;

new string[32];

public plugin_precache(){
if(IsBlockMap())
{
g_bBlockMap = true;
return;
}

#if defined(music)
precache_sound("IDEAL_VIP/ideal_sound.wav");
#endif
}
public plugin_init(){
register_plugin(PLUGIN, VERSION, AUTHOR);

register_dictionary("ideal_vip.txt");

g_iMaxPlayers = get_maxplayers();

register_message(get_user_msgid( "ScoreAttrib" ), "msgScoreAttrib");

register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0");
register_event("TextMsg", "EventRoundRestart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");

RegisterHam(Ham_Killed, "player", "HamPlayerKilled_Post", 1);
RegisterHam(Ham_Spawn, "player", "HamSpawn_Post", 1);

register_clcmd("say /vipmenu", "MainMenu");
register_clcmd("say_team /vipmenu", "MainMenu");

register_clcmd("say /vip_menu", "MainMenu");
register_clcmd("say_team /vip_menu", "MainMenu");

register_clcmd("vipmenu", "MainMenu");

register_clcmd("say /vips", "vip_online");
register_clcmd("say_team /vips", "vip_online");

register_clcmd("say /adminka", "admin_motd");
register_clcmd("say_team /adminka", "admin_motd");

register_clcmd("say /vipka", "vip_motd");
register_clcmd("say_team /vipka", "vip_motd");

msgSayText = get_user_msgid("SayText");
}
public plugin_cfg(){
new szConfigDir[128];

cvar_round = get_pcvar_num(register_cvar("amx_vipround", "2"));
cvar_open = get_pcvar_num(register_cvar("amx_vipzaround", "2"));
cvar_show = get_pcvar_num(register_cvar("amx_vipshow","0"));
cvar_chat = get_pcvar_num(register_cvar("amx_chatshow", "0"));
cvar_pistols = get_pcvar_num(register_cvar("amx_vipautopistols", "1"));
cvar_funk = get_pcvar_num(register_cvar("amx_vipautoset", "1"));
cvar_health = get_pcvar_float(register_cvar("amx_viphealth", "5.0"));
cvar_health_head = get_pcvar_float(register_cvar("amx_viphealth_head", "10.0"));
cvar_health_max = get_pcvar_float(register_cvar("amx_viphealth_max", "120.0"));
cvar_money = get_pcvar_num(register_cvar("amx_vipmoney", "300"));
cvar_money_head = get_pcvar_num(register_cvar("amx_vipmoney_head", "500"));
cvar_tab = get_pcvar_num(register_cvar("amx_viptab", "1"));
cvar_connect = get_pcvar_num(register_cvar("amx_showconnect", "0"));
cvar_x = get_pcvar_float(register_cvar("amx_vipXcoord", "-1.0"));
cvar_y = get_pcvar_float(register_cvar("amx_vipYcoord", "0.6"));
cvar_prefix = register_cvar("amx_vip_prefix", "!g[!tVIP SYSTEM!g]");
#if defined(music)
cvar_music = get_pcvar_num(register_cvar("amx_vipMusic", "1"));
#endif
cvar_awplimit = get_pcvar_num(register_cvar("amx_awproundlimit", "3"));

get_pcvar_string(cvar_prefix, string, charsmax(string));

g_BuyTime = get_cvar_float("mp_buytime"); // читаем, какое значение buytime и записываем в переменную

get_localinfo("amxx_configsdir", szConfigDir, charsmax(szConfigDir));

server_cmd("exec %s/ideal_vip.cfg", szConfigDir);
}

public admin_motd(id, level, cid){
if(!cmd_access(id, level, cid, 1))
return PLUGIN_CONTINUE;

show_motd(id, "adminka.txt", "Как купить админку");

return PLUGIN_CONTINUE;
}

public vip_motd(id, level, cid){
if(!cmd_access(id, level, cid, 1))
return PLUGIN_CONTINUE;

show_motd(id, "vipka.txt", "Как купить випку");

return PLUGIN_CONTINUE;
}

public client_putinserver(id){
g_iWeapon[id] = 0;

if(IsUserCool(id))
set_task(0.5, "vip_connect", id + 132);
}
public client_disconnect(id){
g_iWeapon[id] = 0;
g_Chosen[id] = false;
}

public vip_connect(TASKID){
new id = TASKID - 132;

#if defined(music)
if(cvar_music)
client_cmd(0, "spk IDEAL_VIP/ideal_sound.wav");
#endif

new name[32]; get_user_name(id, name, charsmax(name));

new g_iRed = random_num(1,255),g_iGreen = random_num(1,255),g_iBlue = random_num(1,255); //рандомные цвета для HUD и DHUD

switch(cvar_connect)
{
case 1:
{
ChatColor(0, "%L", id, "VIP_CONNECT", string, name);
}
case 2:
{
set_hudmessage(g_iRed, g_iGreen, g_iBlue, cvar_x, cvar_y, 0, 0.0, 6.0, 0.0, 0.0, -1);
if(get_user_flags(id) & ADMIN_BAN)
show_hudmessage(0, "%L", id, "VIP_CONNECT2", name);
else
show_hudmessage(0, "%L", id, "VIP_CONNECT2", name);
}
case 3:
{
set_dhudmessage(g_iRed, g_iGreen, g_iBlue, cvar_x, cvar_y, 1, 0.0, 6.0, 0.0, 0.0, false);
if(get_user_flags(id) & ADMIN_BAN)
show_dhudmessage(0, "%L", id, "VIP_CONNECT2", name);
else
show_dhudmessage(0, "%L", id, "VIP_CONNECT1", name);
}
case 4:
{
ChatColor(0, "%L", id, "VIP_CONNECT", string, name);

set_hudmessage(g_iRed, g_iGreen, g_iBlue, cvar_x, cvar_y, 1, 0.0, 6.0, 0.0, 0.0, -1);
show_hudmessage(0, "%L", id, "VIP_CONNECT1", name);
}
case 5:
{
ChatColor(0, "%L", id, "VIP_CONNECT", string, name);

set_dhudmessage(g_iRed, g_iGreen, g_iBlue, cvar_x, cvar_y, 1, 0.0, 6.0, 0.0, 0.0, false);
show_dhudmessage(0, "%L", id, "VIP_CONNECT1", name);
}
}
}

public EventRoundStart()
{
set_task(g_BuyTime * 60.0, "offBuyTime"); // запускаем таск и умножаем на 60, т.к. buytime так и считается в минутах
g_BuyTimeEnd = false; // время не закончилось
g_Round++;
}

public offBuyTime() g_BuyTimeEnd = true; // время закончилось

public EventRoundRestart() g_Round = 0;


public HamSpawn_Post(id){
g_iPlayerBomb[id] = false;
vip_opened[id] = 0;

if(!g_bBlockMap)
{
if(IsUserCool(id))
{
if(g_Round == 0) FirstMenu(id);

if(is_user_alive(id))
{
if(cvar_funk == 1) task_funk(id);

if(cvar_show == 1 && g_Round >= cvar_round) MainMenu(id);
}
}
}
}
public HamPlayerKilled_Post(iVictim, iKiller, corpse){
static const m_LastHitGroup = 75;
if(!g_bBlockMap)
{
if(IsUserCool(iVictim))
if(!g_Chosen[iVictim])
set_task(1.0, "FirstMenu", iVictim);
}
if(IsUserCool(iKiller))
{
if(is_user_alive(iKiller))
{
if( get_pdata_int( iVictim, m_LastHitGroup ) == HIT_HEAD)
{
set_pev(iKiller, pev_health, pev(iKiller, pev_health) + cvar_health_head);
if(get_user_health(iKiller) > cvar_health_max)
set_pev(iKiller, pev_health, cvar_health_max);
cs_set_user_money(iKiller, cs_get_user_money(iKiller) + cvar_money_head);
}
else
{
set_pev(iKiller, pev_health, pev(iKiller, pev_health) + cvar_health);
if(pev(iKiller, pev_health) > cvar_health_max)
set_pev(iKiller, pev_health, cvar_health_max);
cs_set_user_money(iKiller, cs_get_user_money(iKiller) + cvar_money);
}
}
}
}

GiveDefaultItems( id, secondary_weapon, strip_and_task = 1 ) {
if( strip_and_task ) {
fm_strip_user_weapons(id);
task_funk(id);
}

switch( secondary_weapon ) {
case 0: {
FirstMenu(id);
}
case 1: {
fm_give_item(id, "weapon_deagle");
cs_set_user_bpammo(id, CSW_DEAGLE, 35);
}
case 2: {
fm_give_item(id, "weapon_usp");
cs_set_user_bpammo(id, CSW_USP, 100);
}
case 3: {
fm_give_item(id, "weapon_glock18");
cs_set_user_bpammo(id, CSW_GLOCK18, 120);
}
}
}

public task_funk(id){
fm_give_item(id, "weapon_knife");
fm_give_item(id, "item_thighpack");
fm_give_item(id, "weapon_hegrenade");
fm_give_item(id, "weapon_flashbang");
fm_give_item(id, "weapon_flashbang");
fm_give_item(id, "weapon_smokegrenade");
fm_give_item(id, "item_assaultsuit");

if(g_iPlayerBomb[id])
{
fm_give_item(id, "weapon_c4");
cs_set_user_plant(id);
g_iPlayerBomb[id] = false;
}

if(cvar_pistols)
{
for(new i = 0; i < 6; i++) fm_strip_user_gun(id, g_iPistols[i]);
GiveDefaultItems( id, g_iWeapon[id], .strip_and_task = 0 );
}
}

public MainMenu(id){
if(g_bBlockMap)
{
ChatColor(id, "%L", id, "VIP_WARNING6", string);
}
else
{
if(IsUserCool(id))
{
if(is_user_alive(id))
{
if(vip_opened[id] < cvar_open || cvar_open == 0)
{
if(g_Round >= cvar_round)
{
if(g_BuyTimeEnd) // закончилось ли время?
{
client_print(id, print_center, "Меню доступно во время закупки!");
return 1;
}

new szTitle[64], szName[32], szPistol[32], szMenuMulti[64];
get_user_name(id, szName, charsmax(szName));

switch(g_iWeapon[id])
{
case 0: szPistol = "NONE";
case 1: szPistol = "Deagle";
case 2: szPistol = "Usp";
case 3: szPistol = "Glock";
}
#if defined EXP_SHOW
new exp = admin_expired(id);
if(exp > 0)
{
new systime = get_systime();
if(exp - systime > 0)
{
if((exp - systime) / 86400 > 0)
formatex(szTitle, charsmax(szTitle), "\w Осталось \y%d \wдней \rVIP\w-ки ^n^n", ((exp - systime) / 86400));
else formatex(szTitle, charsmax(szTitle), "\r Последний \wдень \rVIP\w-ки ^n^n");
}
}
else if(exp == 0)
formatex(szTitle, charsmax(szTitle), " \rVIP \w- Права \yбессрочны ^n^n");
#else
formatex(szTitle, charsmax(szTitle), "%L", id, "VIP_MENU", szName);
#endif
new i_Menu = menu_create(szTitle, "MainMenu_Handler", 1);

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU1", szPistol);
menu_additem(i_Menu, szMenuMulti, "1", 0);

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU2", szPistol);
menu_additem(i_Menu, szMenuMulti, "2", 0);

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU3", szPistol);
menu_additem(i_Menu, szMenuMulti, "3", 0);

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU4", szPistol);
menu_additem(i_Menu, szMenuMulti, "4", 0);

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU5", szPistol);
menu_additem(i_Menu, szMenuMulti, "5", 0);

menu_addblank(i_Menu, 0);

formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU6");
menu_additem(i_Menu, szMenuMulti, "6", 0);

menu_addblank(i_Menu, 1);

menu_setprop(i_Menu, MPROP_EXITNAME, "Выход");
menu_display(id, i_Menu, 0);
}
else
{
if(cvar_round == 2)
{
ChatColor(id, "%L", id, "VIP_WARNING5", string, cvar_round);
return PLUGIN_HANDLED;
}
else
{
ChatColor(id, "%L", id, "VIP_WARNING1", string, cvar_round);
return PLUGIN_HANDLED;
}
}
}
else
ChatColor(id, "%L", id, "VIP_WARNING2", string);
}
else
ChatColor(id, "%L", id, "VIP_WARNING3", string);
}
else
ChatColor(id, "%L", id, "VIP_WARNING4", string);
}
return PLUGIN_HANDLED;
}
public MainMenu_Handler(id, iMenu, item){
if(item == MENU_EXIT)
{
menu_destroy(iMenu);

return PLUGIN_HANDLED;
}

new szData[6], szName[60], iAccess, iCallback;
menu_item_getinfo(iMenu, item, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallback);
get_user_name(id, szName, charsmax(szName));

new iKey = str_to_num(szData);
switch(iKey)
{
case 1:
{
vip_opened[id]++;
if(user_has_weapon(id, CSW_C4))
g_iPlayerBomb[id] = true;

GiveDefaultItems( id, g_iWeapon[id] );

fm_give_item(id, "weapon_m4a1");
cs_set_user_bpammo(id, CSW_M4A1, 90);

if(cvar_chat == 1)
ChatColor(0, "%L", id, "VIP_M4A1", string, szName);
}
case 2:
{
vip_opened[id]++;
if(user_has_weapon(id, CSW_C4))
g_iPlayerBomb[id] = true;
GiveDefaultItems( id, g_iWeapon[id] );

fm_give_item(id, "weapon_ak47");
cs_set_user_bpammo(id, CSW_AK47, 90);

if(cvar_chat == 1)
ChatColor(0, "%L", id, "VIP_AK47", string, szName);
}
case 3:
{
if(g_Round >= cvar_awplimit)
{
vip_opened[id]++;
if(user_has_weapon(id, CSW_C4))
g_iPlayerBomb[id] = true;
GiveDefaultItems( id, g_iWeapon[id] );

fm_give_item(id, "weapon_awp");
cs_set_user_bpammo(id, CSW_AWP, 30);

if(cvar_chat == 1)
ChatColor(0, "%L", id, "VIP_AWP", string, szName);
}
else ChatColor(id, "%L", id, "VIP_WARNING7", string, cvar_awplimit);
}
case 4:
{
vip_opened[id]++;
if(user_has_weapon(id, CSW_C4))
g_iPlayerBomb[id] = true;
GiveDefaultItems( id, g_iWeapon[id] );

fm_give_item(id, "weapon_famas");
cs_set_user_bpammo(id, CSW_FAMAS, 90);

if(cvar_chat == 1)
ChatColor(0, "%L", id, "VIP_FAMAS", string, szName);
}
case 5:
{
vip_opened[id]++;
if(user_has_weapon(id, CSW_C4))
g_iPlayerBomb[id] = true;
GiveDefaultItems( id, g_iWeapon[id] );

fm_give_item(id, "weapon_scout");
cs_set_user_bpammo(id, CSW_SCOUT, 90);

if(cvar_chat == 1)
ChatColor(0, "%L", id, "VIP_SCOUT", string, szName);
}
case 6:
{
FirstMenu(id);
}
}

menu_destroy(iMenu);
return PLUGIN_HANDLED;
}

public FirstMenu(id){
if(!is_user_connected(id))
return;

new i_Menu = menu_create("\rЧто вы предпочитаете?", "FirstMenu_Handler");

menu_additem(i_Menu, "\yDeagle", "1", 0);
menu_additem(i_Menu, "\yGlock", "2", 0);
menu_additem(i_Menu, "\rUsp", "3", 0);


menu_setprop(i_Menu, MPROP_EXITNAME, "Выход");
menu_display(id, i_Menu, 0);
}
public FirstMenu_Handler(id, iMenu, item){
if(item == MENU_EXIT)
{
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}

new szData[6], szName[60], iAccess, iCallback;

menu_item_getinfo(iMenu, item, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallback);

new iKey = str_to_num(szData);

for(new i = 0; i < 6; i++)
fm_strip_user_gun(id, g_iPistols[i]);

switch(iKey)
{
case 1:
{
g_Chosen[id] = true;
g_iWeapon[id] = 1;
fm_give_item(id, "weapon_deagle");
cs_set_user_bpammo(id, CSW_DEAGLE, 35);
}
case 2:
{
g_Chosen[id] = true;
g_iWeapon[id] = 3;
fm_give_item(id, "weapon_glock18");
cs_set_user_bpammo(id, CSW_GLOCK18, 120);
}
case 3:
{
g_Chosen[id] = true;
g_iWeapon[id] = 2;
fm_give_item(id, "weapon_usp");
cs_set_user_bpammo(id, CSW_USP, 100);
}
}

menu_destroy(iMenu);
return PLUGIN_CONTINUE;
}

public msgScoreAttrib(const MsgId, const MsgType, const MsgDest){
if(cvar_tab)
{
if(IsUserCool(get_msg_arg_int(1)) && !get_msg_arg_int(2))
set_msg_arg_int(2, ARG_BYTE, VIP_TAG);
}
}

public vip_online(id){
g_iVip = 0;

new Len, message[512], name[32];
new iPlayer;

for(iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++)
{
if(IsUserCool(iPlayer))
{
g_iVip++;
get_user_name(iPlayer, name, charsmax(name));
if(g_iVip == 1)
Len += format(message[Len], 511 - Len, "%s", name);
else
Len += format(message[Len], 511 - Len, " , %s", name);
}
}
if(g_iVip < 1)
ChatColor(id, "%L", id, "VIP_ONLINE", string);
else
ChatColor(id, "%s: !t%s", string, message);
}

stock ChatColor(const id, const input[], any:...){
new iCount = 1, iPlayers[32];
static szMsg[191];
vformat(szMsg, 190, input, 3);

replace_all(szMsg, 190, "!g", "^4"); // Green Color
replace_all(szMsg, 190, "!y", "^1"); // Default Color
replace_all(szMsg, 190, "!t", "^3"); // Team Color

if (id) iPlayers[0] = id; else get_players(iPlayers, iCount, "ch");
{
for(new iPlayer = 0; iPlayer < iCount; iPlayer++ )
{
if( is_user_connected(iPlayers[iPlayer]) )
{
message_begin(MSG_ONE_UNRELIABLE, msgSayText, _, iPlayers[iPlayer]);
write_byte(iPlayers[iPlayer]);
write_string(szMsg);
message_end();
}
}
}
}
stock IsBlockMap(){
new got_line, line_num, len;
new cfgdir[MAX_TEXT_LENGTH];
new cfgpath[MAX_TEXT_LENGTH];
new mapname[MAX_NAME_LENGTH];
new txt[MAX_TEXT_LENGTH];

get_localinfo("amxx_configsdir", cfgdir, charsmax(cfgdir));
get_mapname(mapname, MAX_NAME_LENGTH-1);

format(cfgpath, MAX_TEXT_LENGTH, "%s/ideal_block_maps.ini", cfgdir);

if (file_exists(cfgpath))
{
got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len);
while (got_line>0)
{
if (equali(txt, mapname)) return 1;
line_num++;
got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len);
}
}
return 0;
}
stock bool: IsUserCool(const id){
if(!is_user_connected(id))
return false;

if((get_user_flags(id) & vip_flag))
return true;

return false;
}


должно работать как часы

Отредактировал: Sorokin, - 30.12.2016, 21:54
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя foxy
сообщение 10.1.2017, 10:11
Сообщение #3
Стаж: 8 лет 2 месяца

Сообщений: 13
Благодарностей: 1
Полезность: 0

Sorokin,

Все работает, благодарю за помощь.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 10.1.2017, 10:59
Сообщение #4
Стаж: 10 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Мы не ищем легких путей..
Код:
register_event("TextMsg", "Block_Msgs", "be", "2&#Cant_buy")

public Block_Msgs()
return PLUGIN_HANDLED
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: