fork(1) download
  1. #include <sourcemod>
  2. #include <client>
  3. #include <msg>
  4. #include <cstrike>
  5. #include <hamsandwich>
  6. #include <string>
  7. #include <array>
  8.  
  9. new TeamName[4][20] =
  10. {
  11. "",
  12. "TERRORIST",
  13. "CT",
  14. "SPECTATOR"
  15. };
  16.  
  17. new __dhud_color;
  18. new __dhud_x;
  19. new __dhud_y;
  20. new __dhud_effect;
  21. new __dhud_fxtime;
  22. new __dhud_holdtime;
  23. new __dhud_fadeintime;
  24. new __dhud_fadeouttime;
  25. new __dhud_reliable;
  26.  
  27. new filename[16] = "killzmrules.txt";
  28. new filenamevip[18] = "kilzmvipinfo.txt";
  29.  
  30. user_silentkill(index)
  31. {
  32. static msgid;
  33. new msgblock;
  34.  
  35. if (!msgid)
  36. {
  37. msgid = get_user_msgid("DeathMsg");
  38. }
  39.  
  40. msgblock = get_msg_block(msgid);
  41. set_msg_block(msgid, 1);
  42. user_kill(index, 1);
  43. set_msg_block(msgid, msgblock);
  44. return 1;
  45. }
  46.  
  47. public __fatal_ham_error(Ham:id, HamError:err, reason[])
  48. {
  49. new func = get_func_id("HamFilter", -1);
  50. new bool:fail = true;
  51.  
  52. if (func != -1 && callfunc_begin_i(func, -1) == 1)
  53. {
  54. callfunc_push_int(id);
  55. callfunc_push_int(err);
  56. callfunc_push_str(reason, 0);
  57. if (callfunc_end() == 1)
  58. {
  59. fail = false;
  60. }
  61. }
  62.  
  63. if (fail)
  64. {
  65. set_fail_state(reason);
  66. }
  67. return 0;
  68. }
  69.  
  70. ColorChat(id, Color:type, msg[])
  71. {
  72. new message[256];
  73. switch (type)
  74. {
  75. case 1:
  76. message[0] = 1;
  77. break;
  78. case 2:
  79. message[0] = 4;
  80. break;
  81. default:
  82. message[0] = 3;
  83. break;
  84. }
  85. vformat(message[1], 251, msg, "DeathMsg");
  86. message[192] = 0;
  87.  
  88. new team;
  89. new ColorChange;
  90. new index;
  91. new MSG_Type;
  92.  
  93. if (id)
  94. {
  95. MSG_Type = 8;
  96. index = id;
  97. }
  98. else
  99. {
  100. index = FindPlayer();
  101. MSG_Type = 0;
  102. }
  103.  
  104. team = get_user_team(index, {0}, 0);
  105. ColorChange = ColorSelection(index, MSG_Type, type);
  106. ShowColorMessage(index, MSG_Type, message);
  107.  
  108. if (ColorChange)
  109. {
  110. Team_Info(index, MSG_Type, TeamName[team]);
  111. }
  112. return 0;
  113. }
  114.  
  115. ShowColorMessage(id, type, message[])
  116. {
  117. static msgSayText;
  118. if (!msgSayText)
  119. {
  120. msgSayText = get_user_msgid("SayText");
  121. }
  122.  
  123. message_begin(type, msgSayText, 232, id);
  124. write_byte(id);
  125. write_string(message);
  126. message_end();
  127. return 0;
  128. }
  129.  
  130. Team_Info(id, type, team[])
  131. {
  132. static msgTeamInfo;
  133. if (!msgTeamInfo)
  134. {
  135. msgTeamInfo = get_user_msgid("TeamInfo");
  136. }
  137.  
  138. message_begin(type, msgTeamInfo, 232, id);
  139. write_byte(id);
  140. write_string(team);
  141. message_end();
  142. return 1;
  143. }
  144.  
  145. ColorSelection(index, type, Color:Type)
  146. {
  147. switch (Type)
  148. {
  149. case 4:
  150. return Team_Info(index, type, TeamName[0]);
  151. case 5:
  152. return Team_Info(index, type, TeamName[1]);
  153. case 6:
  154. return Team_Info(index, type, TeamName[2]);
  155. default:
  156. return 0;
  157. }
  158. }
  159.  
  160. FindPlayer()
  161. {
  162. new i = 1; // Начинаем с 1, так как 0 - это 'нулевой' игрок
  163. while (i <= get_maxplayers())
  164. {
  165. if (is_user_connected(i))
  166. {
  167. return i;
  168. }
  169. i++;
  170. }
  171. return -1;
  172. }
  173.  
  174. set_dhudmessage(red, green, blue, Float:x, Float:y, effects, Float:fxtime, Float:holdtime, Float:fadeintime, Float:fadeouttime, bool:reliable)
  175. {
  176. __dhud_color = clamp(red, 0, 255) << 16 + clamp(green, 0, 255) << 8 + clamp(blue, 0, 255);
  177. __dhud_x = x;
  178. __dhud_y = y;
  179. __dhud_effect = effects;
  180. __dhud_fxtime = fxtime;
  181. __dhud_holdtime = holdtime;
  182. __dhud_fadeintime = fadeintime;
  183. __dhud_fadeouttime = fadeouttime;
  184. __dhud_reliable = reliable;
  185. return 1;
  186. }
  187.  
  188. show_dhudmessage(index, message[])
  189. {
  190. new buffer[128];
  191. new numArguments = numargs();
  192.  
  193. if (numArguments == 2)
  194. {
  195. send_dhudMessage(index, message);
  196. }
  197. else
  198. {
  199. new var1;
  200. if (index || numArguments == 3)
  201. {
  202. vformat(buffer, 127, message, "");
  203. send_dhudMessage(index, buffer);
  204. }
  205.  
  206. new playersList[32];
  207. new numPlayers;
  208. get_players(playersList, numPlayers, "ch", 332);
  209.  
  210. if (!numPlayers)
  211. {
  212. return 0;
  213. }
  214.  
  215. new Array:handleArrayML = ArrayCreate(1, 32);
  216. new i = 2;
  217.  
  218. while (i < numArguments)
  219. {
  220. if (getarg(i, 0) == -1)
  221. {
  222. new j = 0;
  223. while ((buffer[j] = getarg(i + 1, j)) != "")
  224. {
  225. j++;
  226. }
  227.  
  228. if (GetLangTransKey(buffer) != -1)
  229. {
  230. i++;
  231. ArrayPushCell(handleArrayML, i);
  232. }
  233. }
  234. i++;
  235. }
  236.  
  237. new size = ArraySize(handleArrayML);
  238. if (!size)
  239. {
  240. vformat(buffer, 127, message, "");
  241. send_dhudMessage(index, buffer);
  242. }
  243. else
  244. {
  245. for (new i = 0; i < numPlayers; i++)
  246. {
  247. index = playersList[i];
  248. for (new j = 0; j < size; j++)
  249. {
  250. setarg(ArrayGetCell(handleArrayML, j), 0, index);
  251. }
  252. vformat(buffer, 127, message, "");
  253. send_dhudMessage(index, buffer);
  254. }
  255. }
  256. ArrayDestroy(handleArrayML);
  257. }
  258. return 1;
  259. }
  260.  
  261. send_dhudMessage(index, message[])
  262. {
  263. new var2;
  264.  
  265. if (__dhud_reliable)
  266. {
  267. var2 = index ? 1 : 2;
  268. }
  269. else
  270. {
  271. var2 = index ? 8 : 0;
  272. }
  273.  
  274. message_begin(var2, 51, 232, index);
  275. write_byte(strlen(message) + 31); // Длина сообщения
  276. write_byte(6); // Тип сообщения
  277. write_byte(__dhud_effect);
  278. write_long(__dhud_color);
  279. write_long(__dhud_x);
  280. write_long(__dhud_y);
  281. write_long(__dhud_fadeintime);
  282. write_long(__dhud_fadeouttime);
  283. write_long(__dhud_holdtime);
  284. write_long(__dhud_fxtime);
  285. write_string(message);
  286. message_end();
  287. return 0;
  288. }
  289.  
  290. public plugin_init()
  291. {
  292. register_plugin("ZM VIP HPM", "1.0", "P.K.");
  293. RegisterHam(0, "player", "player_spawn", 1);
  294. register_clcmd("say /server", "serverip", -1, 716, -1);
  295. register_clcmd("say /servers", "serverip", -1, 716, -1);
  296. register_clcmd("say /ip", "serverip", -1, 716, -1);
  297. register_clcmd("say /rules", "cmdZMRules", -1, 716, -1);
  298. register_clcmd("say /spec", "cmdSpec", -1, 716, -1);
  299. register_clcmd("chooseteam", "cmdZMvipInfo", -1, 716, -1);
  300. register_clcmd("jointeam", "cmdZMvipInfo", -1, 716, -1);
  301. register_concmd("meta list", "Fuuu", -1, 1280, -1);
  302. register_message(get_user_msgid("Health"), "message_Health");
  303. set_task(1092616192, "ShowHuddead", 987, 1428, 0, 1420, 0);
  304. return 0;
  305. }
  306.  
  307. public ShowHuddead()
  308. {
  309. new iRed = random_num(150, 255);
  310. new iGreen = random_num(150, 255);
  311. new iBlue = random_num(150, 255);
  312. new Players[32];
  313. new playerCount;
  314. new player;
  315.  
  316. get_players(Players, playerCount, "bch", 332);
  317.  
  318. for (new i = 0; i < playerCount; i++)
  319. {
  320. player = Players[i];
  321. set_dhudmessage(iRed, iGreen, iBlue, -1.0, 0.0, 0, 5.0, 10.0, 0.0, 1.0, false);
  322. show_dhudmessage(player, "Для полной информации о сервере - посетите наш сайт!\nwww.KILLzm.net");
  323. }
  324. return 0;
  325. }
  326.  
  327. public player_spawn(id)
  328. {
  329. if (is_user_alive(id) && get_user_flags(id, 0) & 4096) // проверка на флаг
  330. {
  331. set_user_health(id, 222);
  332. cs_set_user_armor(id, 111, 2);
  333. cs_set_user_money(id, 16000, 1);
  334. }
  335. return 0;
  336. }
  337.  
  338. public Fuuu(id)
  339. {
  340. client_cmd(id, "clear");
  341. return 0;
  342. }
  343.  
  344. public cmdSpec(id)
  345. {
  346. if (is_user_alive(id) && get_user_flags(id, 0) & 4096)
  347. {
  348. ColorChat(id, Color:5, "\x03 *\x01 Не используйте эту команду, когда вы живы бродяга!\x03 :)");
  349. return 1; // Прекращаем выполнение функции
  350. }
  351.  
  352. if (cs_get_user_team(id, 0) == 3 && get_user_flags(id, 0) & 4096)
  353. {
  354. ColorChat(id, Color:4, "\x03 *\x01 Вы уже в\x03 Смотрителях");
  355. return 1; // Прекращаем выполнение функции
  356. }
  357. else
  358. {
  359. if (!is_user_alive(id) && get_user_flags(id, 0) & 4096)
  360. {
  361. new namex[32];
  362. get_user_name(id, namex, 31);
  363. user_silentkill(id);
  364. cs_set_user_team(id, "", 0);
  365. ColorChat(0, Color:4, "\x01 *\x04 %s\x01 присоединился к\x03 Смотрителям", namex);
  366. }
  367. }
  368.  
  369. if (get_user_flags(id, 0) & 33554432)
  370. {
  371. ColorChat(id, Color:5, "\x04[\x03 ТОЛЬКО ДЛЯ VIP\x04 ]\x01 покупайте VIP аккаунт здесь:\x03 www.KILLzm.net");
  372. }
  373. return 0;
  374. }
  375.  
  376. public client_impulse(id, impulse)
  377. {
  378. if (get_user_flags(id, 0) & 33554432 && impulse == 201) // Проверка на VIP
  379. {
  380. return 1; // Блокируем импульс
  381. }
  382. return 0;
  383. }
  384.  
  385. public cmdZMvipInfo(id)
  386. {
  387. if (cs_get_user_team(id, 0) == 3 || cs_get_user_team(id, 0))
  388. {
  389. return 0; // Если игрок уже в команде или в зрителях, ничего не делаем
  390. }
  391. show_motd(id, filenamevip, "www.KILLzm.net - VIP Info!");
  392. return 1;
  393. }
  394.  
  395. public cmdZMRules(id)
  396. {
  397. show_motd(id, filename, "www.KILLzm.net - Rules!");
  398. return 0;
  399. }
  400.  
  401. public serverip(id)
  402. {
  403. ColorChat(0, Color:5, "\x04 *\x03 46.174.48.28:27777\x01 посещайте наш сайт:\x04 www.KILLzm.net");
  404. return 0;
  405. }
  406.  
  407. public message_Health(msgid, dest, id)
  408. {
  409. if (!is_user_alive(id))
  410. {
  411. return 0; // Если игрок мертв, не обрабатываем
  412. }
  413.  
  414. static hp;
  415. hp = get_msg_arg_int(1);
  416. if (hp > 255 && hp % 256)
  417. {
  418. hp += 1; // Увеличиваем здоровье
  419. set_msg_arg_int(1, 1, hp);
  420. }
  421. return 0;
  422. }
  423.  
Success #stdin #stdout 0.03s 25756KB
stdin
Standard input is empty
stdout
#include <sourcemod>
#include <client>
#include <msg>
#include <cstrike>
#include <hamsandwich>
#include <string>
#include <array>

new TeamName[4][20] =
{
    "",
    "TERRORIST",
    "CT",
    "SPECTATOR"
};

new __dhud_color;
new __dhud_x;
new __dhud_y;
new __dhud_effect;
new __dhud_fxtime;
new __dhud_holdtime;
new __dhud_fadeintime;
new __dhud_fadeouttime;
new __dhud_reliable;

new filename[16] = "killzmrules.txt";
new filenamevip[18] = "kilzmvipinfo.txt";

user_silentkill(index)
{
    static msgid;
    new msgblock;

    if (!msgid)
    {
        msgid = get_user_msgid("DeathMsg");
    }

    msgblock = get_msg_block(msgid);
    set_msg_block(msgid, 1);
    user_kill(index, 1);
    set_msg_block(msgid, msgblock);
    return 1;
}

public __fatal_ham_error(Ham:id, HamError:err, reason[])
{
    new func = get_func_id("HamFilter", -1);
    new bool:fail = true;

    if (func != -1 && callfunc_begin_i(func, -1) == 1)
    {
        callfunc_push_int(id);
        callfunc_push_int(err);
        callfunc_push_str(reason, 0);
        if (callfunc_end() == 1)
        {
            fail = false;
        }
    }

    if (fail)
    {
        set_fail_state(reason);
    }
    return 0;
}

ColorChat(id, Color:type, msg[])
{
    new message[256];
    switch (type)
    {
        case 1:
            message[0] = 1;
            break;
        case 2:
            message[0] = 4;
            break;
        default:
            message[0] = 3;
            break;
    }
    vformat(message[1], 251, msg, "DeathMsg");
    message[192] = 0;

    new team;
    new ColorChange;
    new index;
    new MSG_Type;

    if (id)
    {
        MSG_Type = 8;
        index = id;
    }
    else
    {
        index = FindPlayer();
        MSG_Type = 0;
    }

    team = get_user_team(index, {0}, 0);
    ColorChange = ColorSelection(index, MSG_Type, type);
    ShowColorMessage(index, MSG_Type, message);

    if (ColorChange)
    {
        Team_Info(index, MSG_Type, TeamName[team]);
    }
    return 0;
}

ShowColorMessage(id, type, message[])
{
    static msgSayText;
    if (!msgSayText)
    {
        msgSayText = get_user_msgid("SayText");
    }

    message_begin(type, msgSayText, 232, id);
    write_byte(id);
    write_string(message);
    message_end();
    return 0;
}

Team_Info(id, type, team[])
{
    static msgTeamInfo;
    if (!msgTeamInfo)
    {
        msgTeamInfo = get_user_msgid("TeamInfo");
    }

    message_begin(type, msgTeamInfo, 232, id);
    write_byte(id);
    write_string(team);
    message_end();
    return 1;
}

ColorSelection(index, type, Color:Type)
{
    switch (Type)
    {
        case 4:
            return Team_Info(index, type, TeamName[0]);
        case 5:
            return Team_Info(index, type, TeamName[1]);
        case 6:
            return Team_Info(index, type, TeamName[2]);
        default:
            return 0;
    }
}

FindPlayer()
{
    new i = 1;  // Начинаем с 1, так как 0 - это 'нулевой' игрок
    while (i <= get_maxplayers())
    {
        if (is_user_connected(i))
        {
            return i;
        }
        i++;
    }
    return -1;
}

set_dhudmessage(red, green, blue, Float:x, Float:y, effects, Float:fxtime, Float:holdtime, Float:fadeintime, Float:fadeouttime, bool:reliable)
{
    __dhud_color = clamp(red, 0, 255) << 16 + clamp(green, 0, 255) << 8 + clamp(blue, 0, 255);
    __dhud_x = x;
    __dhud_y = y;
    __dhud_effect = effects;
    __dhud_fxtime = fxtime;
    __dhud_holdtime = holdtime;
    __dhud_fadeintime = fadeintime;
    __dhud_fadeouttime = fadeouttime;
    __dhud_reliable = reliable;
    return 1;
}

show_dhudmessage(index, message[])
{
    new buffer[128];
    new numArguments = numargs();

    if (numArguments == 2)
    {
        send_dhudMessage(index, message);
    }
    else
    {
        new var1;
        if (index || numArguments == 3)
        {
            vformat(buffer, 127, message, "");
            send_dhudMessage(index, buffer);
        }

        new playersList[32];
        new numPlayers;
        get_players(playersList, numPlayers, "ch", 332);

        if (!numPlayers)
        {
            return 0;
        }

        new Array:handleArrayML = ArrayCreate(1, 32);
        new i = 2;

        while (i < numArguments)
        {
            if (getarg(i, 0) == -1)
            {
                new j = 0;
                while ((buffer[j] = getarg(i + 1, j)) != "")
                {
                    j++;
                }

                if (GetLangTransKey(buffer) != -1)
                {
                    i++;
                    ArrayPushCell(handleArrayML, i);
                }
            }
            i++;
        }

        new size = ArraySize(handleArrayML);
        if (!size)
        {
            vformat(buffer, 127, message, "");
            send_dhudMessage(index, buffer);
        }
        else
        {
            for (new i = 0; i < numPlayers; i++)
            {
                index = playersList[i];
                for (new j = 0; j < size; j++)
                {
                    setarg(ArrayGetCell(handleArrayML, j), 0, index);
                }
                vformat(buffer, 127, message, "");
                send_dhudMessage(index, buffer);
            }
        }
        ArrayDestroy(handleArrayML);
    }
    return 1;
}

send_dhudMessage(index, message[])
{
    new var2;
    
    if (__dhud_reliable)
    {
        var2 = index ? 1 : 2;
    }
    else
    {
        var2 = index ? 8 : 0;
    }

    message_begin(var2, 51, 232, index);
    write_byte(strlen(message) + 31); // Длина сообщения
    write_byte(6); // Тип сообщения
    write_byte(__dhud_effect);
    write_long(__dhud_color);
    write_long(__dhud_x);
    write_long(__dhud_y);
    write_long(__dhud_fadeintime);
    write_long(__dhud_fadeouttime);
    write_long(__dhud_holdtime);
    write_long(__dhud_fxtime);
    write_string(message);
    message_end();
    return 0;
}

public plugin_init()
{
    register_plugin("ZM VIP HPM", "1.0", "P.K.");
    RegisterHam(0, "player", "player_spawn", 1);
    register_clcmd("say /server", "serverip", -1, 716, -1);
    register_clcmd("say /servers", "serverip", -1, 716, -1);
    register_clcmd("say /ip", "serverip", -1, 716, -1);
    register_clcmd("say /rules", "cmdZMRules", -1, 716, -1);
    register_clcmd("say /spec", "cmdSpec", -1, 716, -1);
    register_clcmd("chooseteam", "cmdZMvipInfo", -1, 716, -1);
    register_clcmd("jointeam", "cmdZMvipInfo", -1, 716, -1);
    register_concmd("meta list", "Fuuu", -1, 1280, -1);
    register_message(get_user_msgid("Health"), "message_Health");
    set_task(1092616192, "ShowHuddead", 987, 1428, 0, 1420, 0);
    return 0;
}

public ShowHuddead()
{
    new iRed = random_num(150, 255);
    new iGreen = random_num(150, 255);
    new iBlue = random_num(150, 255);
    new Players[32];
    new playerCount;
    new player;

    get_players(Players, playerCount, "bch", 332);
    
    for (new i = 0; i < playerCount; i++)
    {
        player = Players[i];
        set_dhudmessage(iRed, iGreen, iBlue, -1.0, 0.0, 0, 5.0, 10.0, 0.0, 1.0, false);
        show_dhudmessage(player, "Для полной информации о сервере - посетите наш сайт!\nwww.KILLzm.net");
    }
    return 0;
}

public player_spawn(id)
{
    if (is_user_alive(id) && get_user_flags(id, 0) & 4096) // проверка на флаг
    {
        set_user_health(id, 222);
        cs_set_user_armor(id, 111, 2);
        cs_set_user_money(id, 16000, 1);
    }
    return 0;
}

public Fuuu(id)
{
    client_cmd(id, "clear");
    return 0;
}

public cmdSpec(id)
{
    if (is_user_alive(id) && get_user_flags(id, 0) & 4096)
    {
        ColorChat(id, Color:5, "\x03 *\x01 Не используйте эту команду, когда вы живы бродяга!\x03 :)");
        return 1; // Прекращаем выполнение функции
    }

    if (cs_get_user_team(id, 0) == 3 && get_user_flags(id, 0) & 4096)
    {
        ColorChat(id, Color:4, "\x03 *\x01 Вы уже в\x03 Смотрителях");
        return 1; // Прекращаем выполнение функции
    }
    else
    {
        if (!is_user_alive(id) && get_user_flags(id, 0) & 4096)
        {
            new namex[32];
            get_user_name(id, namex, 31);
            user_silentkill(id);
            cs_set_user_team(id, "", 0);
            ColorChat(0, Color:4, "\x01 *\x04 %s\x01 присоединился к\x03 Смотрителям", namex);
        }
    }

    if (get_user_flags(id, 0) & 33554432)
    {
        ColorChat(id, Color:5, "\x04[\x03 ТОЛЬКО ДЛЯ VIP\x04 ]\x01 покупайте VIP аккаунт здесь:\x03 www.KILLzm.net");
    }
    return 0;
}

public client_impulse(id, impulse)
{
    if (get_user_flags(id, 0) & 33554432 && impulse == 201) // Проверка на VIP
    {
        return 1; // Блокируем импульс
    }
    return 0;
}

public cmdZMvipInfo(id)
{
    if (cs_get_user_team(id, 0) == 3 || cs_get_user_team(id, 0))
    {
        return 0; // Если игрок уже в команде или в зрителях, ничего не делаем
    }
    show_motd(id, filenamevip, "www.KILLzm.net - VIP Info!");
    return 1;
}

public cmdZMRules(id)
{
    show_motd(id, filename, "www.KILLzm.net - Rules!");
    return 0;
}

public serverip(id)
{
    ColorChat(0, Color:5, "\x04 *\x03 46.174.48.28:27777\x01 посещайте наш сайт:\x04 www.KILLzm.net");
    return 0;
}

public message_Health(msgid, dest, id)
{
    if (!is_user_alive(id))
    {
        return 0; // Если игрок мертв, не обрабатываем
    }
    
    static hp;
    hp = get_msg_arg_int(1);
    if (hp > 255 && hp % 256)
    {
        hp += 1; // Увеличиваем здоровье
        set_msg_arg_int(1, 1, hp);
    }
    return 0;
}