Участник
Пользователь
- Сообщения
- 336
- Реакции
- 93
- Помог
- 2 раз(а)
Парсинг значений для hud (жёсткое, без any).
Проверка на время в указанном промежутке (unix).
(Не знаю, если ли здесь)
Сравнение 2-х бит флагов. Получает строковую разницу. Возращает бит флаг разницы.
Являются ли группа флагов игнором (Если перед флагами стоит точка, то проверяется каждый флаг, иначе наличия хотя бы одного из них. Разделение групп через пробел).
Код:
stock UTIL_ReadHudSettings(szHud[], &iRed = 255, &iGreen = 255, &iBlue = 255, &Float: x = 0.01, &Float: y = 0.3, &effects,
&Float: flFxTime, &Float: flHoldTime, &Float: flFadeInTime, &Float: flFadeOut)
{
new iStart, iEnd;
iRed = strtol(szHud, iEnd); iStart += iEnd;
iGreen = strtol(szHud[iStart], iEnd); iStart += iEnd;
iBlue = strtol(szHud[iStart], iEnd); iStart += iEnd;
x = strtof(szHud[iStart], iEnd); iStart += iEnd;
y = strtof(szHud[iStart], iEnd); iStart += iEnd;
effects = strtol(szHud[iStart], iEnd); iStart += iEnd;
flFxTime = strtof(szHud[iStart], iEnd); iStart += iEnd;
flHoldTime = strtof(szHud[iStart], iEnd); iStart += iEnd;
flFadeInTime = strtof(szHud[iStart], iEnd); iStart += iEnd;
flFadeOut = strtof(szHud[iStart]);
}
Код:
szHud[] = "255 255 255 0.01 0.3 0 0.0 2.0 0.1 0.2"
new iRed, iGreen, iBlue, Float: x, Float: y, effects, Float: flFxTime, Float: flHoldTime, Float: flFadeInTime, Float: flFadeOut;
UTIL_ReadHudSettings(szHud, iRed, iGreen, iBlue, x, y, effects, flFxTime, flHoldTime, flFadeInTime, flFadeOut);
set_hudmessage(iRed, iGreen, iBlue, x, y, effects, flFxTime, flHoldTime, flFadeInTime, flFadeOut, -1);
Проверка на время в указанном промежутке (unix).
(Не знаю, если ли здесь)
Код:
stock bool: UTIL_IsTimeWithin(iStart, iEnd)
{
new iSysTime = get_systime();
if (!(iEnd <= iSysTime <= iStart))
{
return true;
}
return false;
}
Сравнение 2-х бит флагов. Получает строковую разницу. Возращает бит флаг разницы.
Код:
stock UTIL_GetOtherFlags(bitFlagsOne, bitFlagsTwo, szOther[])
{
bitFlagsTwo &= ~bitFlagsOne;
get_flags(bitFlagsTwo, szOther, 31);
return bitFlagsTwo;
}
Код:
new szOther[32];
set_user_flags(iPlayer, "alm");
new bitFlags = UTIL_GetOtherFlags(get_user_flags(iPlayer), read_flags("abit"), szOther);
// szOther == "bit"
// bitFlags == read_flags("bit")
Являются ли группа флагов игнором (Если перед флагами стоит точка, то проверяется каждый флаг, иначе наличия хотя бы одного из них. Разделение групп через пробел).
Код:
stock bool: UTIL_IsIgnorFlags(bitFlags, szIgnor[])
{
new iPos, szFlags[32];
while (iPos != -1)
{
iPos = argparse(szIgnor, iPos, szFlags, charsmax(szFlags));
if (replace(szFlags, charsmax(szFlags), ".", ""))
{
if (bitFlags == (bitFlags | read_flags(szFlags))) return true;
}
else
{
if (bitFlags & read_flags(szFlags)) return true;
}
}
return false;
}
Код:
UTIL_IsIgnorFlags(read_flags("abit"), ".am t"); // Вернёт true т.к. есть флаг 't'
UTIL_IsIgnorFlags(read_flags("abit"), "z .at"); // Вернёт true т.к. есть и флаг 'a', и флаг 't'
UTIL_IsIgnorFlags(read_flags("abit"), ".am"); // Вернёт false т.к. есть только флаг 'a'
UTIL_IsIgnorFlags(read_flags("abit"), "z lf .am vt"); // Вернёт true т.к. есть флаг 't'
Последнее редактирование: