NewGreen
22.10.2015, 12:34
Приветствую, наверное многие видели как в Need For Speed (в некоторых частях) полицейские могли обезвреживали машину гонщика при помощи ЭМИ.
Как нам известно ЭМИ - это Электромагнитный импульс, который блокирует работу двигателя автомобиля попутно выводя из строя всю электронную начинку.
Сегодня хочу представить вам подобную систему для SA:MP, но с некоторыми отличиями от той что была в NFS.
Основное отличие, в том что, в оригинальной NFS оборудование ЭМИ установлено в автомобиле, в нашей же системе, в качестве ЭМИ используется переностное оружие, вы можете настроить ЭМИ на любом огнестрельном оружии.
Приступим к описанию:
Основные функции:
SetEMPStatusToPlayer(playerid,status) - функция позволяющая включить/выключить возможность использовать ЭМИ для игрока.
параметры:
playerid - ID игрока
status - переключатель true, false
опции:
true - включить ЭМИ для игрока
false - выключить ЭМИ для игрока
IsVehicleUnderEMP(vehicleid) - функция проверяющая был ли транспорт, атакован при помощи ЭМИ.
параметры:
vehicleid - ID транспорта.
возвращает:
true - если машина не в рабочем состоянии, т.е. была под воздействием ЭМИ.
false - если машина в рабочем состоянии.
SetPlayerEMPWeapon(playerid,weaponid) - функция позволяющая установить для игрока статус ЭМИ для любого огнестрельного оружия.
параметры:
playerid - ID игрока
weaponid - ID огнестрельного оружия
Дополнительные настройки
#define EMP_SOUND_ID 6600 - определяет ID звука ЭМИ который слышен окружающим при воздействии ЭМИ на транспорт
#define EMP_WORK_DISTANCE 50 - определяет рабочую дистанцию ЭМИ.
Приступим к установке:
Первое что нужно сделать это - скачать и подключить файл empsystem.inc
#include <a_samp>
#include <empsystem>
// ...
Важно подключить файл после файла a_samp.inc !
Некоторые нюансы/советы в работе системы ЭМИ:
1. Первый выстрел из оружия ЭМИ лишь повредит электронную часть транспорта, последующие выстрелы будут наносить прямой урон.
Это сделано для того чтобы игрок мог "отключить" транспорт в плохом физическом состоянии (дымящийся) не взорвав его.
2. На каждый транспорт вам дается один ЭМИ выстрел.
3. Функцию SetEMPStatusToPlayer можно использовать в таймере, чтобы ограничить время перезарядки ЭМИ.
Подобное решение позволит ограничить количество выстрелов ЭМИ, например можно сделать чтобы ЭМИ заряд был доступен раз в 10 сек
Upd:
v 1.1
- Проведена оптимизация функции GetDistanceFromPlayerToVehicle, за счет нативной функции VectorSize,
скорость работы функции возросла в ~3,5 раза.
- Убраны расширенные настройки, с целью не создавать излишнюю функциональность.
- Проведены легкие "косметические" изменения.
Ссылки для скачивания:
http://rghost.ru (http://rghost.ru/private/8Vb8WhRsg/e2d5899956ac589abd1c5122e9914651)
http://pastebin.com/ (http://pastebin.com/2B3BGaiX)
Спасибо за внимание!
Автор: NewGreen
Как нам известно ЭМИ - это Электромагнитный импульс, который блокирует работу двигателя автомобиля попутно выводя из строя всю электронную начинку.
Сегодня хочу представить вам подобную систему для SA:MP, но с некоторыми отличиями от той что была в NFS.
Основное отличие, в том что, в оригинальной NFS оборудование ЭМИ установлено в автомобиле, в нашей же системе, в качестве ЭМИ используется переностное оружие, вы можете настроить ЭМИ на любом огнестрельном оружии.
Приступим к описанию:
Основные функции:
SetEMPStatusToPlayer(playerid,status) - функция позволяющая включить/выключить возможность использовать ЭМИ для игрока.
параметры:
playerid - ID игрока
status - переключатель true, false
опции:
true - включить ЭМИ для игрока
false - выключить ЭМИ для игрока
IsVehicleUnderEMP(vehicleid) - функция проверяющая был ли транспорт, атакован при помощи ЭМИ.
параметры:
vehicleid - ID транспорта.
возвращает:
true - если машина не в рабочем состоянии, т.е. была под воздействием ЭМИ.
false - если машина в рабочем состоянии.
SetPlayerEMPWeapon(playerid,weaponid) - функция позволяющая установить для игрока статус ЭМИ для любого огнестрельного оружия.
параметры:
playerid - ID игрока
weaponid - ID огнестрельного оружия
Дополнительные настройки
#define EMP_SOUND_ID 6600 - определяет ID звука ЭМИ который слышен окружающим при воздействии ЭМИ на транспорт
#define EMP_WORK_DISTANCE 50 - определяет рабочую дистанцию ЭМИ.
Приступим к установке:
Первое что нужно сделать это - скачать и подключить файл empsystem.inc
#include <a_samp>
#include <empsystem>
// ...
Важно подключить файл после файла a_samp.inc !
Некоторые нюансы/советы в работе системы ЭМИ:
1. Первый выстрел из оружия ЭМИ лишь повредит электронную часть транспорта, последующие выстрелы будут наносить прямой урон.
Это сделано для того чтобы игрок мог "отключить" транспорт в плохом физическом состоянии (дымящийся) не взорвав его.
2. На каждый транспорт вам дается один ЭМИ выстрел.
3. Функцию SetEMPStatusToPlayer можно использовать в таймере, чтобы ограничить время перезарядки ЭМИ.
Подобное решение позволит ограничить количество выстрелов ЭМИ, например можно сделать чтобы ЭМИ заряд был доступен раз в 10 сек
Upd:
v 1.1
- Проведена оптимизация функции GetDistanceFromPlayerToVehicle, за счет нативной функции VectorSize,
скорость работы функции возросла в ~3,5 раза.
- Убраны расширенные настройки, с целью не создавать излишнюю функциональность.
- Проведены легкие "косметические" изменения.
Ссылки для скачивания:
http://rghost.ru (http://rghost.ru/private/8Vb8WhRsg/e2d5899956ac589abd1c5122e9914651)
http://pastebin.com/ (http://pastebin.com/2B3BGaiX)
Спасибо за внимание!
Автор: NewGreen