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

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

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

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

Как сделать выдачу с 3 раунда

dimka198
сообщение 19.4.2015, 16:46
Сообщение #1
Стаж: 12 лет

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

Всем привет!Подскажите как сделать выдачу бонусов с 3 раунда?

Steam bonus
Код:
/*
* Обновление 28.09.2014
* v1.1 -
Исправлены ошибки
Оптимизирован код
Выдавание бонусов теперь по очереди
Добавлено приветственное DHUD сообщение
*
* Обновление 06.03.2015
* v1.2 -
Исправлено предупреждение при компиляции на AMXX ниже 1.8.3
Добавлен вывод второго DHUD сообщения, чтобы помещался ник
*/

#include <amxmodx>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <dhudmessage>

#if AMXX_VERSION_NUM < 183
#include <colorchat>

#define client_print_color ColorChat
#define print_team_red RED
#endif

#pragma semicolon 1

#define PLUGIN "Steam Bonus"
#define VERSION "1.2"
#define AUTHOR "Stimul"
#define PREFIX "[Steam бонус]"

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

// Цвет DHUD сообщения
#define COLOR_RED random(255) // Количество красного цвета
#define COLOR_GREEN random(255) // Количество зелёного цвета
#define COLOR_BLUE random(255) // Количество синего цвета

#define TIME 5.0 // Время показа

#define NUM_MONEY 1000 // Количество денег

new g_bIsConnected;
new g_bIsSteam;
new g_bProcedure;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);

RegisterHam(Ham_CS_RoundRespawn, "player", "fw_CS_RoundRespawn_Post", true);
}

public client_putinserver(id)
{
set_bit(g_bIsConnected, id);

if(is_user_steam(id))
{
set_bit(g_bIsSteam, id);
reset_bit(g_bProcedure, id);
set_task(3.0, "WelcomeMessage", id);
}
else
reset_bit(g_bIsSteam, id);
}

public client_disconnect(id)
reset_bit(g_bIsConnected, id);

public WelcomeMessage(id)
{
if(get_bit(g_bIsConnected, id))
{
static szName[32];
get_user_name(id, szName, charsmax(szName));

set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.3, 0, 0.0, TIME);
show_dhudmessage(id, "Привет, %s!", szName);
set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.34, 0, 0.0, TIME);
show_dhudmessage(id, "У тебя Steam, поэтому каждый раунд ты будешь получать бонусы");
}
}

public fw_CS_RoundRespawn_Post(id)
{
if(get_bit(g_bIsConnected, id) && get_bit(g_bIsSteam, id))
{
if(!get_bit(g_bProcedure, id))
{
cs_set_user_money(id, cs_get_user_money(id) + NUM_MONEY);
client_print_color(id, print_team_red, "^3%s ^1Ты получаешь бонус: ^4'%d$'", PREFIX, NUM_MONEY);
set_bit(g_bProcedure, id);
}
else
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
give_item(id, "weapon_smokegrenade");
client_print_color(id, print_team_red, "^3%s ^1Ты получаешь бонус: ^4'все гранаты'", PREFIX);
reset_bit(g_bProcedure, id);
}
}
}

stock bool:is_user_steam(id)
{
static dp_pointer;

if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}

new szAuthid[34];
get_user_authid(id, szAuthid, charsmax(szAuthid));

return (containi(szAuthid, "LAN") < 0);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя admir
сообщение 19.4.2015, 16:52
Сообщение #2
Стаж: 13 лет

Сообщений: 192
Благодарностей: 31
Полезность: 138

после смены карты, отслеживать событие начала раунда
Код:
register_event("HLTV", "Function", "a", "1=0", "2=0")

считать, как только будет третий раунд - присвоить значение проверочной переменной "true" и разрешить плагину выдавать бонусы
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
dimka198
сообщение 19.4.2015, 16:56
Сообщение #3
Стаж: 12 лет

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

admir, я в павне не понимаю ничего)если вам не сложно можете отредактировать исходник и скинуть уже готовый?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 19.4.2015, 17:35
Сообщение #4


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

dimka198, несложно, но вам надо самому постараться что-то сделать


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя admir
сообщение 19.4.2015, 20:03
Сообщение #5
Стаж: 13 лет

Сообщений: 192
Благодарностей: 31
Полезность: 138

у меня не компилируются ваши бонусы вообще.
но возможно у вас выйдет (уже исправленная, есть очень маленькая уловка, что-бы плагин заработал правильно):
Код:
#include <amxmodx>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <dhudmessage>

#if AMXX_VERSION_NUM < 183
#include <colorchat>

#define client_print_color ColorChat
#define print_team_red RED
#endif

#pragma semicolon 1

#define PLUGIN "Steam Bonus"
#define VERSION "1.2"
#define AUTHOR "Stimul"
#define PREFIX "[Steam бонус]"

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))

// Цвет DHUD сообщения
#define COLOR_RED random(255) // Количество красного цвета
#define COLOR_GREEN random(255) // Количество зелёного цвета
#define COLOR_BLUE random(255) // Количество синего цвета

#define TIME 5.0 // Время показа
#define NUM_MONEY 1000 // Количество денег

new g_bIsConnected;
new g_bIsSteam;
new g_bProcedure;

#define LIMITROUND 3 //Ограничение по раундам
new bool:g_bRoundEnabler;
new g_nRounds;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
RegisterHam(Ham_CS_RoundRespawn, "player", "fw_CS_RoundRespawn_Post", true);
register_event("HLTV", "new_round", "a", "1=0", "2=0");
register_event("TextMsg", "event_round_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
}

public event_round_restart()
{
g_bRoundEnabler = false;
g_nRounds = 0;
}

public new_round()
{
if(!g_bRoundEnabler)
if(++g_nRounds > LIMITROUND - 1)
g_bRoundEnabler = true;
}

public client_putinserver(id)
{
set_bit(g_bIsConnected, id);

if(is_user_steam(id))
{
set_bit(g_bIsSteam, id);
reset_bit(g_bProcedure, id);
set_task(3.0, "WelcomeMessage", id);
}
else
reset_bit(g_bIsSteam, id);
}

public client_disconnect(id)
reset_bit(g_bIsConnected, id);

public WelcomeMessage(id)
{
if(get_bit(g_bIsConnected, id))
{
static szName[32];
get_user_name(id, szName, charsmax(szName));

set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.3, 0, 0.0, TIME);
show_dhudmessage(id, "Привет, %s!", szName);
set_dhudmessage(COLOR_RED, COLOR_GREEN, COLOR_BLUE, -1.0, 0.34, 0, 0.0, TIME);
show_dhudmessage(id, "У тебя Steam, поэтому каждый раунд ты будешь получать бонусы");
}
}

public fw_CS_RoundRespawn_Post(id)
{
if(get_bit(g_bIsConnected, id) && get_bit(g_bIsSteam, id) /*&& g_bRoundEnabler*/)
{
if(!get_bit(g_bProcedure, id))
{
cs_set_user_money(id, cs_get_user_money(id) + NUM_MONEY);
client_print_color(id, print_team_red, "^3%s ^1Ты получаешь бонус: ^4'%d$'", PREFIX, NUM_MONEY);
set_bit(g_bProcedure, id);
}
else
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
give_item(id, "weapon_smokegrenade");
client_print_color(id, print_team_red, "^3%s ^1Ты получаешь бонус: ^4'все гранаты'", PREFIX);
reset_bit(g_bProcedure, id);
}
}
}

stock bool:is_user_steam(id)
{
static dp_pointer;

if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}

new szAuthid[34];
get_user_authid(id, szAuthid, charsmax(szAuthid));

return (containi(szAuthid, "LAN") < 0);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: