|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
|
Угол до ближайшего игрока от взгляда
|
|
| draft | Дата: Воскресенье, 24.08.2008, 22:18:27 | Сообщение # 1 |
 Полковник
Группа: Пользователи
Сообщений: 225
Статус: Не в сети
| Необходимо найти угол от взгляда игрока до ближайшей цели (другого игрока).
|
| |
|
|
| Brute | Дата: Воскресенье, 24.08.2008, 23:33:37 | Сообщение # 2 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| Quote (draft) Необходимо найти угол от взгляда игрока до ближайшей цели (другого игрока). У меня с геометрией проблемы, точнее вообще с математикой МБ get_user_origin... (см. amxmodx.inc)
|
| |
|
|
| AlMod | Дата: Понедельник, 25.08.2008, 08:44:08 | Сообщение # 3 |
|
Сонный кодер
Группа: Админы
Сообщений: 600
Статус: Не в сети
| Юзай геометрию
|
| |
|
|
| Brute | Дата: Понедельник, 25.08.2008, 08:57:03 | Сообщение # 4 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| #include <geometry> 
|
| |
|
|
| DaTa | Дата: Понедельник, 25.08.2008, 13:41:24 | Сообщение # 5 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| вот накалякал, нету возможности проверить: Code #include <amxmodx> #include <fakemeta> #include <fakemeta_util> #include <xs>
//... /** * @param id айди игрока, от взгляда которого искать угол к ближайшему игроку * @param fAngel эта переменная передается по ссылке и в случае нахождения ближайшего игрока содержит угол к к нему * @return возвращает айди ближайшего игрока, в случае неудачи 0 */ stock angle_to_nearest_player(id, &Float:fAngel) { //ищем ближайшего игрока static ePlayer, Float:fDist, Float:fCurDist, Float:vOrigin[3], Float:vOrigin2[3], i//, iTeam //iTeam = get_user_team(id) pev(id, pev_origin, vOrigin) pev(id, pev_view_ofs, vOrigin2) xs_vec_add(vOrigin, vOrigin2, vOrigin)//vOrigin - точка взгляда игрока ePlayer = 0 for(i = 1; i <= get_maxplayers(); i++) { if( i == id || !is_user_alive(i) /*|| iTeam == get_user_team(i)*/ ) continue pev(i, pev_origin, vOrigin2) fCurDist = get_distance_f(vOrigin, vOrigin2) if( !ePlayer || fCurDist < fDist ) { ePlayer = i fDist = fCurDist } } if( !ePlayer ) return 0 pev(ePlayer, pev_origin, vOrigin2) fAngel = fm_get_view_angle_diff(ePlayer, vOrigin2) return ePlayer } если хочешь узнать, находится ли он в обзоре экрана(не обязательно видно, может быть за припятствиями, для проверки видимости см. fakemeta_util.inc :: fm_is_visible) Code static Float:fFov, Float:fAngel, id2 pev(id, pev_fov, fFov) id2 = angle_to_nearest_player(id, fAngel) if( fFov <= fAngel ) ...
Сообщение отредактировал DaTa - Вторник, 26.08.2008, 11:45:52 |
| |
|
|
| draft | Дата: Четверг, 28.08.2008, 11:11:52 | Сообщение # 6 |
 Полковник
Группа: Пользователи
Сообщений: 225
Статус: Не в сети
| Спасибо за скрипт, но это не то. Сразу приношу извинения, что не совсем точно сформулировал задачу. Требуется найти угол не до ближайшего оппонента, а на какой минимальный угол надо повернуться, чтобы попасть в цель. Суть идеи такова, что игрок с аимом при маленьком fov захватывает цель, потом стреляет. Чистый же игрок может выстрелить, не захватив цель. И я что-то не взял в толк, как правильно бутербродом хукнуть как раз событие стрельбы, а то в classname перечислять все виды оружий не улыбает. И там даже есть такая вещь, как Ham_HasTarget, кто-нить может привести пример, как это использовать? А то про преобразование строки szindex больно не понятно и откуда её брать, я тож не понял (если использовать как forward) Да, ещё возник вопрос, как контра делает трейсы сквозь стену? На чём основаны, вообще, возможность/невозможность прострела?
Сообщение отредактировал draft - Четверг, 28.08.2008, 11:15:04 |
| |
|
|
| DaTa | Дата: Четверг, 28.08.2008, 14:32:39 | Сообщение # 7 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Quote (draft) И я что-то не взял в толк, как правильно бутербродом хукнуть как раз событие стрельбы где-то у VEN'а была статья на этот счет, юзани поиск на этом форуме, может что-то посвежее писал на AM - юзани и там поиск Quote (draft) Да, ещё возник вопрос, как контра делает трейсы сквозь стену? http://amxmodx.ucoz.ru/forum/14-1751-1 вообщем щас уже нету времени заниматься этим
|
| |
|
|
| draft | Дата: Четверг, 28.08.2008, 14:56:00 | Сообщение # 8 |
 Полковник
Группа: Пользователи
Сообщений: 225
Статус: Не в сети
| Юзал уже и даже помню, про это шёл разговор, но то ли удалили, то ли найти не могу.
|
| |
|
|
| VEN | Дата: Четверг, 28.08.2008, 19:37:50 | Сообщение # 9 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Quote (HLSDK) virtual BOOL HasTarget( string_t targetname ) { return FStrEq(STRING(targetname), STRING(pev->targetname) ); } Обычное сравнение с targetname pev значением. По выстрелам и трэйсам см. раздел "скриптов". Quote И я что-то не взял в толк, как правильно бутербродом хукнуть как раз событие стрельбы Quote (бутерброд) /** * Description: Called when the main attack of a weapon is triggered. * Forward params: function(this) * Return type: None. * Execute params: ExecuteHam(Ham_Weapon_PrimaryAttack, this); */ Ham_Weapon_PrimaryAttack, /** * Description: Called when the secondary attack of a weapon is triggered. * Forward params: function(this) * Return type: None. * Execute params: ExecuteHam(Ham_Weapon_SecondaryAttack, this); */ Ham_Weapon_SecondaryAttack, Просто навешиваешь данный хук. Параметр entid передаются в функцию хука. Quote А то про преобразование строки szindex больно не понятно и откуда её брать, я тож не понял (если использовать как forward) Пример:Code new const g_weapon_c4[] = "weapon_c4"
public plugin_init() { register_forward(FM_CreateNamedEntity, "fwCreateNamedEntity") }
public fwCreateNamedEntity(iClassname) { static szClassname[sizeof g_weapon_c4 + 1] engfunc(EngFunc_SzFromIndex, iClassname, szClassname, sizeof g_weapon_c4) if (equal(szClassname, g_weapon_c4)) return FMRES_SUPERCEDE
return FMRES_IGNORED }
|
| |
|
|
 | AMX Mod X Russian Community © 2006-2026  |  |
|
| |