AMXX-BG.INFO kreedz_util.inc Raw include

kreedz_util.inc

Original include source with line numbers.

Back Download .inc
1 #if defined _kreedz_util_included
2 #endinput
3 #endif
4
5 #define _kreedz_util_included
6
7 #include <reapi>
8
9 stock kz_register_cmd(szCmd[], szHandler[]) {
10 new szFormatedCmd[64];
11
12 formatex(szFormatedCmd, 63, "say %s", szCmd);
13 register_clcmd(szFormatedCmd, szHandler);
14
15 formatex(szFormatedCmd, 63, "say_team %s", szCmd);
16 register_clcmd(szFormatedCmd, szHandler);
17
18 formatex(szFormatedCmd, 63, "say /%s", szCmd);
19 register_clcmd(szFormatedCmd, szHandler);
20
21 formatex(szFormatedCmd, 63, "say_team /%s", szCmd);
22 register_clcmd(szFormatedCmd, szHandler);
23
24 formatex(szFormatedCmd, 63, "%s", szCmd);
25 register_clcmd(szFormatedCmd, szHandler);
26
27 formatex(szFormatedCmd, 63, "/%s", szCmd);
28 register_clcmd(szFormatedCmd, szHandler);
29 }
30
31 stock UTIL_LogToFile(const szPath[], const szLevel[], const szFunction[], const szMessage[], any:...) {
32 new szMsg[512];
33 vformat(szMsg, charsmax(szMsg), szMessage, 5);
34
35 log_to_file(szPath, "[%s][%s] %s", szLevel, szFunction, szMsg);
36 }
37
38 stock UTIL_TimeToSec(Float:fTime, &iMin, &iSec, &iMS) {
39 iMin = floatround(fTime / 60.0, floatround_floor);
40 iSec = floatround(fTime - iMin * 60.0, floatround_floor);
41 iMS = floatround((fTime - (iMin * 60.0 + iSec)) * 100.0, floatround_floor);
42 }
43
44 stock UTIL_FormatTime(Float:fTime, szBuffer[], iLen, bool:withMS = false) {
45 new iMin, iSec, iMS;
46 UTIL_TimeToSec(fTime, iMin, iSec, iMS);
47
48 if (withMS)
49 formatex(szBuffer, iLen, "%02d:%02d.%02d", iMin, iSec, iMS);
50 else
51 formatex(szBuffer, iLen, "%02d:%02d", iMin, iSec);
52 }
53
54 stock UTIL_BroadcastToSpec(
55 id, const szMsg[], bool:isOnlySpec, bool:isDhud,
56 red, green, blue,
57 Float:x, Float:y,
58 Float:holdTime, channel = -1
59 ) {
60 for (new i = 1; i <= MAX_PLAYERS; ++i) {
61 if (i == id && !isOnlySpec) {
62 if (isDhud) {
63 set_dhudmessage(red, green, blue, x, y, 0,
64 0.00, holdTime, 0.01, 0.01);
65 show_dhudmessage(i, szMsg);
66 }
67 else {
68 set_hudmessage(red, green, blue, x, y, 0,
69 0.00, holdTime, 0.01, 0.01, channel);
70 show_hudmessage(i, szMsg);
71 }
72
73 continue;
74 }
75
76 if (is_user_alive(i)) continue;
77 if (get_entvar(i, var_iuser2) != id) continue;
78
79 if (isDhud) {
80 set_dhudmessage(red, green, blue, x, y, 0,
81 0.00, holdTime, 0.02, 0.02);
82 show_dhudmessage(i, szMsg);
83 }
84 else {
85 set_hudmessage(red, green, blue, x, y, 0,
86 0.00, holdTime, 0.02, 0.02, channel);
87 show_hudmessage(i, szMsg);
88 }
89 }
90 }
91
92 stock UTIL_RGBPack(r, g, b) {
93 new rgb = (r << 16) + (g << 8) + b;
94
95 return rgb;
96 }
97
98 stock UTIL_RGBUnpack(color) {
99 new rgb[3];
100
101 rgb[0] = (color >> 16) & 255;
102 rgb[1] = (color >> 8) & 255;
103 rgb[2] = color & 255;
104
105 return rgb;
106 }
107
108 stock UTIL_TimerRoundtime(id, time) {
109 if (!is_user_connected(id)) return;
110
111 static msgRoundTime;
112
113 if (!msgRoundTime) msgRoundTime = get_user_msgid("RoundTime");
114
115 message_begin(MSG_ONE_UNRELIABLE, msgRoundTime, .player = id);
116 write_short(time + 1);
117 message_end();
118 }
119
120 stock bool:is_user_spectating(iAlive, iSpec) {
121 if (!is_user_connected(iSpec) || is_user_alive(iSpec) || is_user_bot(iSpec))
122 return false;
123
124 if (get_entvar(iSpec, var_iuser1) != 1 &&
125 get_entvar(iSpec, var_iuser1) != 2 &&
126 get_entvar(iSpec, var_iuser1) != 4)
127 return false;
128
129 if (get_entvar(iSpec, var_iuser2) != iAlive)
130 return false;
131
132 return true;
133 }