- Код: Выделить всё
engfunc(EngFunc_TraceLine, start, end, DONT_IGNORE_MONSTERS, ignore_ent, 0);
игнорировать не одну ентити, а несколько?
golandec писал(а): Объясню по подробнее, плагин должен служить тому когда сервер заполнен чтобы перенаправлял игроков на другой сервер
Модераторы: Subb98, liFe iS GoOD
engfunc(EngFunc_TraceLine, start, end, DONT_IGNORE_MONSTERS, ignore_ent, 0);
артист666 писал(а):Циклом, проверять что допустим это не игрок.
#include <amxmodx>
#include <fakemeta>
public plugin_init()
{
register_clcmd("ppfire", "functions")
}
public functions(id)
{
static Float:start[3]; pev(id, pev_origin, start) // Координаты игрока
static Float:end[3]; pev(id, pev_view_ofs, end) // Высота от координат до взгляда
static Float:angle[3]; pev(id, pev_v_angle, angle) // Угол обзора игрока
angle_vector(angle, ANGLEVECTOR_FORWARD, angle) // Перевести угол в единичный вектор
// Просто сокращение, start = start + end, end = start + angle * 9889(т.е. от точки по направлению на 9889 юнит дальше)
end[0] = angle[0] * 9889.0 + (start[0] += end[0])
end[1] = angle[1] * 9889.0 + (start[1] += end[1])
end[2] = angle[2] * 9889.0 + (start[2] += end[2])
static ent; ent = id // Переменная под ид объектов
static name[33] // Под ник
static tr; tr = create_tr2() // Создать новый, можно и просто 0 и убрать free_tr2
while(ent) // Можно просто 1 даже поставить, т.к. условие внутри цикла
{
engfunc(EngFunc_TraceLine, start, end, DONT_IGNORE_MONSTERS, ent, tr) // Трейс
ent = get_tr2(tr, TR_pHit) // Получаем ид объекта, в который упёрся трейс
if(!is_user_alive(ent)) break // Если объект мертв, значит выход. если нет, то продолжить с места объекта
get_tr2(tr, TR_vecEndPos, start) // Получить координаты конца трейса
get_user_name(ent, name, charsmax(name)) // Получить имя игрока
client_print(id, print_chat, "id = %i %s", ent, name) // Вывести в чат
}
free_tr2(tr)
}
артист666 писал(а):Куда уже конкретнее?
- Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
public plugin_init()
{
register_clcmd("ppfire", "functions")
}
public functions(id)
{
static Float:start[3]; pev(id, pev_origin, start) // Координаты игрока
static Float:end[3]; pev(id, pev_view_ofs, end) // Высота от координат до взгляда
static Float:angle[3]; pev(id, pev_v_angle, angle) // Угол обзора игрока
angle_vector(angle, ANGLEVECTOR_FORWARD, angle) // Перевести угол в единичный вектор
// Просто сокращение, start = start + end, end = start + angle * 9889(т.е. от точки по направлению на 9889 юнит дальше)
end[0] = angle[0] * 9889.0 + (start[0] += end[0])
end[1] = angle[1] * 9889.0 + (start[1] += end[1])
end[2] = angle[2] * 9889.0 + (start[2] += end[2])
static ent; ent = id // Переменная под ид объектов
static name[33] // Под ник
static tr; tr = create_tr2() // Создать новый, можно и просто 0 и убрать free_tr2
while(ent) // Можно просто 1 даже поставить, т.к. условие внутри цикла
{
engfunc(EngFunc_TraceLine, start, end, DONT_IGNORE_MONSTERS, ent, tr) // Трейс
ent = get_tr2(tr, TR_pHit) // Получаем ид объекта, в который упёрся трейс
if(!is_user_alive(ent)) break // Если объект мертв, значит выход. если нет, то продолжить с места объекта
get_tr2(tr, TR_vecEndPos, start) // Получить координаты конца трейса
get_user_name(ent, name, charsmax(name)) // Получить имя игрока
client_print(id, print_chat, "id = %i %s", ent, name) // Вывести в чат
}
free_tr2(tr)
}
Сейчас этот форум просматривают: Bing [Bot], nekruxa и гости: 19