Доброго времени суток. Не понимаю как сделать, чтобы ночное видение было у всех, без необходимости его покупать.
Пробовал добавлять
Но если я правильно понял, то это и не должно было сработать. Это первая попытка что-то сделать, но я зашел в тупик. Помогите пожалуйста
Пробовал добавлять
Код:
#include <fun>
public client_connect(id)
{
give_item(id,"item_nvgs")
}
Код:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
// GetPdataByte(iEntity, iOffset, iLinuxOffset)
#define GetPdataByte(%0,%1,%2) ((get_pdata_int(%0, %1 / 4, %2) >> (8 * (%1 % 4))) & 0xFF)
// Найденные мною смещения
#define OFFSET_TURNEDNVG 517 // Включено ли ночное видение
// Различие линуксовских оффсетов от виндосовских
#define CBasePlayer 5
// Режим наблюдения от первого лица
#define OBS_IN_EYE 4
// Включено ли ночное видение у игрока
#define PlayerTurnedNvg(%0) GetPdataByte(%0, OFFSET_TURNEDNVG, CBasePlayer)
// Получение режима наблюдения
#define PlayerSpectateMode(%0) entity_get_int(%0, EV_INT_iuser1)
// Получение игрока за которым наблюдаем
#define PlayerSpectate(%0) entity_get_int(%0, EV_INT_iuser2)
// Настройки
#define NVG_UPDATE 0.1 // Как часто обновлять ночное видение (свечение)
#define NVG_RADIUS 500 // Радиус свечения
#define NVG_COLOR_R 255 // Цвет ночного видения (RED)
#define NVG_COLOR_G 255 // GREEN
#define NVG_COLOR_B 255 // BLUE
#define NVG_LIFE 2 // Жизнь свечения
#define NVG_DECAYRATE 0 // Затухание
// Инициализация
public plugin_init()
{
// Регистрируем
register_plugin("Custom NVG", "Alpha", "WPMG PRoSToTeM@");
// Блокируем стандартное ночное видение
set_msg_block(get_user_msgid("NVGToggle"), BLOCK_SET);
// Устанавливаем задачу на обновление ночного видения
set_task(NVG_UPDATE, "TaskNVG", _, _, _, "b");
}
// Обновление ночного видения
public TaskNVG()
{
// Игроки, количество игроков, игрок, наблюдаемый игрок
new iPlayers[32], iPlayersCount, iEntity, iSpectating;
// Получаем игроков
get_players(iPlayers, iPlayersCount);
// Цикл по всем игрокам
for (new i = 0; i < iPlayersCount; i++)
{
// Запоминаем последнего игрока
iEntity = iPlayers[i];
// Если игрок жив
if (is_user_alive(iEntity))
{
// Если не включено ночное видение идём в начало цикла
if (!PlayerTurnedNvg(iEntity))
continue;
}
// Если игрок мёртв
else
{
// Если режим наблюдения не от первого лица идём в начало цикла
if (PlayerSpectateMode(iEntity) != OBS_IN_EYE)
continue;
// Получаем наблюдаемого игрока
iSpectating = PlayerSpectate(iEntity);
// Если наблюдаёмый мёртв или его нет идём в начало цикла
if (!is_user_alive(iSpectating))
continue;
// Если у наблюдаемого не включено ночное видение идём в начало цикла
if (!PlayerTurnedNvg(iSpectating))
continue;
}
// Получаем координаты игрока
new iOrigin[3];
get_user_origin(iEntity, iOrigin);
// Отсылаем свечение
message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, iEntity);
write_byte(TE_DLIGHT);
write_coord(iOrigin[0]); // Координаты
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_byte(NVG_RADIUS); // Радиус
write_byte(NVG_COLOR_R); // Цвет
write_byte(NVG_COLOR_G);
write_byte(NVG_COLOR_B);
write_byte(NVG_LIFE); // Жизнь
write_byte(NVG_DECAYRATE); // Decay rate
message_end();
}
}