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

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

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

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

Координаты HUD информера

[РЕШЕНО]
Статус пользователя rasskazov
сообщение 10.10.2015, 18:04
Сообщение #1


Стаж: 13 лет
Город: Где-то в Крыму)

Сообщений: 499
Благодарностей: 158
Полезность: 436

Добрый вечер.
Помогите, изменить координаты hud`а поставить его под радар , я на скрине отметил)
Исходник
Код:
#include <amxmodx>
#include <engine>
#include <hamsandwich>
#include <fun>
#include <dhudmessage>
#include <WPMGPrintChatColor>

#define PLUGIN "Mind Games"
#define VERSION "2.0"
#define AUTHOR "Nickron"

#define ROUNDS 5

#define SHORT_FORMAT 255, 255, 255, 0.05, 0.4, 0, 6.0, 6.0
#define SH_FORMAT 255, 255, 255, 0.05, 0.4, 0, 6.0, 1.0

#define DHUD_LONG_FORMAT 255, 255, 255, 0.05, 0.4, 0, 0.0, 0.0, 0.6, 6.0
#define DHUD_MATRIX_FORMAT 255, 255, 255, 0.01, 0.4, 0, 0.0, 0.0, 0.6, 1.0
#define DHUD_SHORT_FORMAT 255, 255, 255, 0.01, 0.4, 0, 0.0, 0.0, 0.6, 1.0

new answer, nick_winner[32], num1, num2, num3, num4, num5, mode
new type
new bool: in_ready, in_show

new auto_bhop_enable[33] = ROUNDS
new g_maxpl

new Regen[33]
new HP[33]

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

register_clcmd("say","res")
register_clcmd("say_team","res")
register_clcmd("mind_go","go")

RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled_Post", 1);
register_event("HLTV", "NewRound", "a", "1=0", "2=0")

set_task(220.0, "go", _, _, _, "b")
set_task(1.0, "quest", _, _, _, "b")
set_task(1.0, "show", _, _, _, "b")

g_maxpl = get_maxplayers()
for(new i=1; i<=g_maxpl; i++)
auto_bhop_enable[i] = ROUNDS
}

public plugin_precache()
{
precache_sound("mind_games/offf.wav")
precache_sound("mind_games/onn.wav")
return PLUGIN_CONTINUE
}

public quest ()
{
if (!in_ready)
{
in_ready = true
type = 0
num1 = random_num(1, 100)
num2 = random_num(1, 50)
num3 = random_num(1, 50)
num4 = random_num(1, 50)
num5 = random_num(1, 50)

mode = random_num(0, 5)

switch(mode)
{
case 0:
{
type = 0
answer = num1 + num2 + num3 + num4 + num5
}
case 1:
{
type = 1
answer = num1 - num2 - num3 - num4 - num5
}
case 2:
{
type = 2
answer = num1 + num2 - num3 + num4 - num5
}
case 3:
{
type = 3
answer = num1 - num2 + num3 - num4 + num5
}
case 4:
{
type = 4
answer = num1 - num2 - num3 + num4 + num5
}
case 5:
{
type = 5
answer = num1 + num2 + num3 - num4 - num5
}
}
}
}

public go()
{
if(in_show)
in_ready = false
client_cmd(0, "spk mind_games/onn" )
in_show = true
}


public show()
{
if(in_show)
{
set_dhudmessage(DHUD_SHORT_FORMAT)
switch (type)
{
case 0: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d + %d + %d + %d + %d = ?", num1, num2, num3, num4, num5)
case 1: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d - %d - %d - %d - %d = ?", num1, num2, num3, num4, num5)
case 2: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d + %d - %d + %d - %d = ?", num1, num2, num3, num4, num5)
case 3: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d - %d + %d - %d + %d = ?", num1, num2, num3, num4, num5)
case 4: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d - %d - %d + %d + %d = ?", num1, num2, num3, num4, num5)
case 5: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d + %d + %d - %d - %d = ?", num1, num2, num3, num4, num5)
}
}
}

public res(id)
{
if(in_show)
{
new chat[256], smanswer[32]
read_args(chat, 255)
remove_quotes(chat)
num_to_str(answer, smanswer, 31)

if (equali(chat, smanswer ))
{
in_show = false
set_task(1.5,"award",id)
}
}
}

public award(id)
{
client_cmd(0, "spk mind_games/offf" );

get_user_name(id,nick_winner,31);

new prise = random_num(1, 6)

switch (prise)
{
case 1:
{
new iMoney = random_num(5500, 16000)
cs_set_user_money(id, cs_get_user_money(id) + iMoney)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: %d$^nОтвет: %d", nick_winner, iMoney, answer)
}
case 2:
{
if(is_user_alive(id))
{
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_smokegrenade")
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: Комплект гранат^nОтвет: %d", nick_winner, answer)
}
else
{
new iMoney = random_num(5500, 16000)
cs_set_user_money(id, cs_get_user_money(id) + iMoney)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: %d$^nОтвет: %d", nick_winner, iMoney, answer)
}
}
case 3:
{
RegenHP(id)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: Регенерация до 200HP %i^nОтвет: %d", nick_winner, HP[id], answer)
}
case 4:
{
set_user_gravity(id,0.5)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: Заячий прыжок^nОтвет: %d", nick_winner, answer)
}
case 5:
{
get_bonney(id)
player_resp(id)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: Bany Hop '5' Раундов^nОтвет: %d", nick_winner, answer)
}
case 6:
{
player_resp(id)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: Возрождение Товарища^nОтвет: %d", nick_winner, answer)
}
}
in_ready = false
}

public RegenHP(id)
{
id = id - 123321

if(!is_user_alive(id)) return;

HP[id] = HP[id] - 10

if(HP[id] > 0)
{
set_user_health(id, get_user_health(id) + 10)
set_hudmessage(255, 255, 255, -1.0, -0.2, 0, 1.1, 1.0, 0.1, 0.0, 2)
show_hudmessage(id, "Регенерация: %i", HP[id])
}
else if(HP[id] == 0)
{
remove_task(id + 123321)
Regen[id] = false
}
}

public Ham_PlayerKilled_Post(id)
{
if(Regen[id])
{
remove_task(id + 123321)
set_hudmessage(255, 255, 255, -1.0, -0.2, 0, 1.1, 1.0, 0.1, 0.0, 2)
show_hudmessage(id, "Вы умерли не достигнув конца регенерации")
}
}
public get_bonney(id)
{
if(!is_user_alive(id))
return

if(auto_bhop_enable[id] < ROUNDS)
return

auto_bhop_enable[id] = 0

return
}

public client_PreThink(id)
{
if (auto_bhop_enable[id] == ROUNDS)
return PLUGIN_CONTINUE

entity_set_float(id, EV_FL_fuser2, 0.0)

if (entity_get_int(id, EV_INT_button) & 2)
{
new flags = entity_get_int(id, EV_INT_flags)

if (flags & FL_WATERJUMP)
return PLUGIN_CONTINUE

if (entity_get_int(id, EV_INT_waterlevel) >= 2)
return PLUGIN_CONTINUE

if (!(flags & FL_ONGROUND))
return PLUGIN_CONTINUE

new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
velocity[2] += 250.0
entity_set_vector(id, EV_VEC_velocity, velocity)

entity_set_int(id, EV_INT_gaitsequence, 6)
}

return PLUGIN_CONTINUE
}

public client_disconnect(id)
auto_bhop_enable[id] = ROUNDS

public NewRound()
{
for(new i=1; i<=g_maxpl; i++)
{
if(auto_bhop_enable[i] < ROUNDS)
{
auto_bhop_enable[i]++
if(auto_bhop_enable[i] == ROUNDS - 1)
PrintChatColor(i, _, "!g[%s] !yПоследний раунд с автораспрыжкой", PLUGIN)
}
}
}
public player_resp(id)
{
new Players[32]
new Count
if(cs_get_user_team(id) == CS_TEAM_CT)
get_players(Players,Count,"beh","CT")
if(cs_get_user_team(id) == CS_TEAM_T)
get_players(Players,Count,"beh","T")

if(Count != 0) {
new player, i

i = random_num(0,Count-1)
player = Players[i]
ExecuteHam(Ham_CS_RoundRespawn, player)
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/



Прикрепленное изображение
Прикрепленные файлы:
Прикрепленное изображение
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Bloo
сообщение 10.10.2015, 18:29
Сообщение #2


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

rasskazov, Координация + Скриншот
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя cscms
сообщение 10.10.2015, 18:38
Сообщение #3
Стаж: 10 лет

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

Код:
#include <amxmodx>
#include <engine>
#include <hamsandwich>
#include <fun>
#include <dhudmessage>
#include <WPMGPrintChatColor>

#define PLUGIN "Mind Games"
#define VERSION "2.0"
#define AUTHOR "Nickron"

#define ROUNDS 5

#define SHORT_FORMAT 255, 255, 255, 0.05, 0.4, 0, 6.0, 6.0
#define SH_FORMAT 255, 255, 255, 0.05, 0.4, 0, 6.0, 1.0

#define DHUD_LONG_FORMAT 255, 255, 255, 0.05, 0.4, 0, 0.0, 0.0, 0.6, 6.0
#define DHUD_MATRIX_FORMAT 255, 255, 255, 0.01, 0.4, 0, 0.0, 0.0, 0.6, 1.0
#define DHUD_SHORT_FORMAT 255, 255, 255, 0.01, 0.4, 0, 0.0, 0.0, 0.6, 1.0

new answer, nick_winner[32], num1, num2, num3, num4, num5, mode
new type
new bool: in_ready, in_show

new auto_bhop_enable[33] = ROUNDS
new g_maxpl

new Regen[33]
new HP[33]

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

register_clcmd("say","res")
register_clcmd("say_team","res")
register_clcmd("mind_go","go")

RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled_Post", 1);
register_event("HLTV", "NewRound", "a", "1=0", "2=0")

set_task(220.0, "go", _, _, _, "b")
set_task(1.0, "quest", _, _, _, "b")
set_task(1.0, "show", _, _, _, "b")

g_maxpl = get_maxplayers()
for(new i=1; i<=g_maxpl; i++)
auto_bhop_enable[i] = ROUNDS
}

public plugin_precache()
{
precache_sound("mind_games/offf.wav")
precache_sound("mind_games/onn.wav")
return PLUGIN_CONTINUE
}

public quest ()
{
if (!in_ready)
{
in_ready = true
type = 0
num1 = random_num(1, 100)
num2 = random_num(1, 50)
num3 = random_num(1, 50)
num4 = random_num(1, 50)
num5 = random_num(1, 50)

mode = random_num(0, 5)

switch(mode)
{
case 0:
{
type = 0
answer = num1 + num2 + num3 + num4 + num5
}
case 1:
{
type = 1
answer = num1 - num2 - num3 - num4 - num5
}
case 2:
{
type = 2
answer = num1 + num2 - num3 + num4 - num5
}
case 3:
{
type = 3
answer = num1 - num2 + num3 - num4 + num5
}
case 4:
{
type = 4
answer = num1 - num2 - num3 + num4 + num5
}
case 5:
{
type = 5
answer = num1 + num2 + num3 - num4 - num5
}
}
}
}

public go()
{
if(in_show)
in_ready = false
client_cmd(0, "spk mind_games/onn" )
in_show = true
}


public show()
{
if(in_show)
{
set_dhudmessage(DHUD_SHORT_FORMAT)
switch (type)
{
case 0: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d + %d + %d + %d + %d = ?", num1, num2, num3, num4, num5)
case 1: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d - %d - %d - %d - %d = ?", num1, num2, num3, num4, num5)
case 2: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d + %d - %d + %d - %d = ?", num1, num2, num3, num4, num5)
case 3: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d - %d + %d - %d + %d = ?", num1, num2, num3, num4, num5)
case 4: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d - %d - %d + %d + %d = ?", num1, num2, num3, num4, num5)
case 5: show_dhudmessage(0, "Remake Nickron^nМатематика^nВопрос:^n%d + %d + %d - %d - %d = ?", num1, num2, num3, num4, num5)
}
}
}

public res(id)
{
if(in_show)
{
new chat[256], smanswer[32]
read_args(chat, 255)
remove_quotes(chat)
num_to_str(answer, smanswer, 31)

if (equali(chat, smanswer ))
{
in_show = false
set_task(1.5,"award",id)
}
}
}

public award(id)
{
client_cmd(0, "spk mind_games/offf" );

get_user_name(id,nick_winner,31);

new prise = random_num(1, 6)

switch (prise)
{
case 1:
{
new iMoney = random_num(5500, 16000)
cs_set_user_money(id, cs_get_user_money(id) + iMoney)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: %d$^nОтвет: %d", nick_winner, iMoney, answer)
}
case 2:
{
if(is_user_alive(id))
{
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_smokegrenade")
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: Комплект гранат^nОтвет: %d", nick_winner, answer)
}
else
{
new iMoney = random_num(5500, 16000)
cs_set_user_money(id, cs_get_user_money(id) + iMoney)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: %d$^nОтвет: %d", nick_winner, iMoney, answer)
}
}
case 3:
{
RegenHP(id)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: Регенерация до 200HP %i^nОтвет: %d", nick_winner, HP[id], answer)
}
case 4:
{
set_user_gravity(id,0.5)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: Заячий прыжок^nОтвет: %d", nick_winner, answer)
}
case 5:
{
get_bonney(id)
player_resp(id)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: Bany Hop '5' Раундов^nОтвет: %d", nick_winner, answer)
}
case 6:
{
player_resp(id)
set_dhudmessage(DHUD_LONG_FORMAT)
show_dhudmessage(0, "Победитель: %s^nНаграда: Возрождение Товарища^nОтвет: %d", nick_winner, answer)
}
}
in_ready = false
}

public RegenHP(id)
{
id = id - 123321

if(!is_user_alive(id)) return;

HP[id] = HP[id] - 10

if(HP[id] > 0)
{
set_user_health(id, get_user_health(id) + 10)
set_hudmessage(255, 255, 255, 0.0, 0.11, 0, 1.1, 1.0, 0.1, 0.0, 2)
show_hudmessage(id, "Регенерация: %i", HP[id])
}
else if(HP[id] == 0)
{
remove_task(id + 123321)
Regen[id] = false
}
}

public Ham_PlayerKilled_Post(id)
{
if(Regen[id])
{
remove_task(id + 123321)
set_hudmessage(255, 255, 255, 0.0, 0.11, 0, 1.1, 1.0, 0.1, 0.0, 2)
show_hudmessage(id, "Вы умерли не достигнув конца регенерации")
}
}
public get_bonney(id)
{
if(!is_user_alive(id))
return

if(auto_bhop_enable[id] < ROUNDS)
return

auto_bhop_enable[id] = 0

return
}

public client_PreThink(id)
{
if (auto_bhop_enable[id] == ROUNDS)
return PLUGIN_CONTINUE

entity_set_float(id, EV_FL_fuser2, 0.0)

if (entity_get_int(id, EV_INT_button) & 2)
{
new flags = entity_get_int(id, EV_INT_flags)

if (flags & FL_WATERJUMP)
return PLUGIN_CONTINUE

if (entity_get_int(id, EV_INT_waterlevel) >= 2)
return PLUGIN_CONTINUE

if (!(flags & FL_ONGROUND))
return PLUGIN_CONTINUE

new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
velocity[2] += 250.0
entity_set_vector(id, EV_VEC_velocity, velocity)

entity_set_int(id, EV_INT_gaitsequence, 6)
}

return PLUGIN_CONTINUE
}

public client_disconnect(id)
auto_bhop_enable[id] = ROUNDS

public NewRound()
{
for(new i=1; i<=g_maxpl; i++)
{
if(auto_bhop_enable[i] < ROUNDS)
{
auto_bhop_enable[i]++
if(auto_bhop_enable[i] == ROUNDS - 1)
PrintChatColor(i, _, "!g[%s] !yПоследний раунд с автораспрыжкой", PLUGIN)
}
}
}
public player_resp(id)
{
new Players[32]
new Count
if(cs_get_user_team(id) == CS_TEAM_CT)
get_players(Players,Count,"beh","CT")
if(cs_get_user_team(id) == CS_TEAM_T)
get_players(Players,Count,"beh","T")

if(Count != 0) {
new player, i

i = random_num(0,Count-1)
player = Players[i]
ExecuteHam(Ham_CS_RoundRespawn, player)
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/

Пробуй
смотря какие hud'ы тебе надо переместить,все?

Отредактировал: cscms, - 10.10.2015, 18:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Vaqtincha
сообщение 11.10.2015, 3:49
Сообщение #4
Стаж: 11 лет

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

уважаемые пожалуйста под спойлер. Получается такой длинный текст я с телефона терпеть это не могу....
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Berezagrad
сообщение 10.2.2023, 13:56
Сообщение #5
Стаж: 3 года 3 месяца

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

Здравствуйте форумчане. Апну тему, спустя 8 лет:) Нужна помощь. Вопрос аналогичный решённому. Хочу перенести меню випки. Она сейчас находится почти ровно по-середине, где у меня иконки оружия и прочее.. У ТСа должен был быть информер прям под радаром, а мне нужно прям под его примером!!! Надеюсь понятно изъясняюсь. Кто понимает, покажите решение. Ну а если ещё и объяснить не трудно будет, что к чему, ваще круто будет) Исход - Vip System, 1.4.0
Код
/********************************************************************************
*****************
*  Возможности:
*  1. Префикс сообщений от плагина
*  2. VipMenu (vipmenu, /vipmenu) - оружия: ak47, m4a1, awp, пулемет.
*  3. Так же работают чат команды: /ak47, /m4a1, /awp, /b51.
*  4. AWP и Пулемет можно использовать с N раунда (настраивается).
*  5. Не работает на картах awp_, аim_, 35hp, fy_
*  6. Дополнительные HP за убийства (настраивается)
*  7. Автовыдача дигла при спавне (отключаемо), если включено можно выставить с N раунда (настраивается).
*  8. Автовыдача гранат при спавне (отключаемо), если включено можно выставить с N раунда (настраивается).
*  9. Выдача брони при спавне с N раунда (настраивается).
*  10. Выдача дефузов за кт при спавне с N раунда (настраивается).
*  11. Срок до конда с Admin Loader by Neugomon (отключаемо).
*  12. VIP статус в TAB (отключаемо).
*  13. Сообщение при подключении игрока.
*  14. Звук при заходе вип игрока (отключаемо).
*  15. Дамагер (отключаемо).
*  16. Переключение дамагера (setinfo) по команде в чат /damager
********************************************************************************
*****************/

#include <amxmodx>
#include <reapi>

#if AMXX_VERSION_NUM < 183
    #include <colorchat>
#endif

/* Конфигурационные defines */
#define VIP_ACCESS      ADMIN_USER      // Чёрный рынок
#define PREFIX          "^1[^4VIP^1]^1"    // Префикс перед сообщениями ( ^1 - желтый ^3 - цвет команды ^4 - зеленый )
#define VIPROUND        1                  // C какого раунда можно открыть VIP меню
#define AWPM249RND      4                  // С какого раунда доступны AWP и пулемет
#define ADDHP_HS        10.0               // Кол-во добавляемого HP за убийство в голову (выставить 0.0 если не надо добавлять, так как закомментировать нельзя)
#define ADDHP           5.0                // Кол-во добавляемого HP за убийство (выставить 0.0 если не надо добавлять, так как закомментировать нельзя)
#define MAXHP           100.0              // Максимальное количество HP
//#define VIPAUTODEAGLE                      // В начале каждого раунда давать Deagle (закомментируйте если не надо)
//#define VIPAUTOGRENADE                     // Давать в начале каждого раунда гранаты (закомментируйте если не надо)
#define ROUND_NADES     1                  // С какого раунда давать гранаты (если раскомментировано VIPAUTOGRENADE иначе нет смысла менять работать не будет)
#define ROUND_DEAGLE    1                  // С какого раунда давать deagle (если раскомментировано VIPAUTODEAGLE иначе нет смысла менять работать не будет)
#define ROUND_ARMOR     10000                  // С какого раунда давать броню
#define ROUND_DEFUSE    1                  // С какого раунда давать 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 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 /vipmenu", "cmdVipMenu");
    register_clcmd("say_team /vipmenu", "cmdVipMenu");
    register_clcmd("vipmenu", "cmdVipMenu");
    register_clcmd("say", "hook_say");
    register_clcmd("say_team", "hook_say");
#if defined FIFTH_ITEM
    register_menucmd(register_menuid("Выбери оружие"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5, "VipMenuHandler");
#else
    register_menucmd(register_menuid("Выбери оружие"), 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(isUserVip(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 На сервер зашёл ^3VIP клиент ^1%s", 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) && 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(0, 100, 200, Float:g_fCoords[iPos][0], Float:g_fCoords[iPos][1], 2, 0.5, 1.5, 0.02, 0.02, -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 Данное оружие доступно только с ^3%d ^1раунда!", 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;

    iLen = formatex(szMenu, charsmax(szMenu), "\yВыбери оружие^n");

    iKey |= MENU_KEY_1|MENU_KEY_2;
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wВзять \yAK47^n\r2. \wВзять \yM4A1^n");
    
#if defined FIFTH_ITEM
    iKey |= MENU_KEY_5;
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5. \wДамагер \r[\y%s\r]^n^n", g_isSwitchDmg[id] ? "Включен" : "Отключен");
#endif
    formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
    show_menu(id, iKey, szMenu, -1);
    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, 250 };
            static const szChoosedWP[][] = { "weapon_ak47", "weapon_m4a1", "weapon_awp", "weapon_m249" };
            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 Только VIP-игрок может пользоваться этой командой!", PREFIX);
        return false;
    }
    if(!is_user_alive(id)) {
        client_print_color(id, print_team_default, "%s Для использования данной команды вы должны быть живы!", PREFIX);
        return false;
    }
    if(!g_iRoundCount) {
        client_print_color(id, print_team_default, "%s Разминочный раунд. Запрещено пользоваться командой!", PREFIX);
        return false;
    }
    if(g_bUseWeapon[id]) {
        client_print_color(id, print_team_default, "%s Вы уже брали оружие в этом раунде!", PREFIX);
        return false;
    }
    if(g_iRoundCount < VIPROUND) {
        client_print_color(id, print_team_default, "%s Оружия доступны только с ^3%d ^1раунда!", PREFIX, VIPROUND);
        return false;
    }
    return true;
}

public cmdSwitchDmg(id) {
    if(!isUserVip(id)) {
        client_print_color(id, print_team_default, "%s Эту команду может использовать только VIP игрок", 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] ? "включили" : "отключили");
    client_print_color(id, print_team_default, "%s Вы ^3%s ^1дамагер для себя", PREFIX, szSwitch);
    return PLUGIN_CONTINUE;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: