Русское сообщество по скриптингу

Как проверить виден ли игрок? ( is_visible ?)

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Как проверить виден ли игрок? ( is_visible ?)

Сообщение Chuvi » 10 апр 2012, 21:05

[pawn]
  1. is_visible(id,target)
[/pawn]
Почему-то возвращает физическое состояние цели:
Жив и бегает- значит видимый.
Мёртв и летает по карте - значит невидимый.
При этом стены никак не учитываются.

На вики amxmodx.org нашёл:
[pawn]
  1.  

  2. public wall_between(Float:start[3], Float:end[3], ignore_ent)

  3. {

  4.         // Create the trace handle! It is best to create it!

  5.         new ptr = create_tr2()

  6.        

  7.         // The main traceline function!

  8.         // This function ignores GLASS, MISSILE and MONSTERS!

  9.         // Here is an example of how you should combine all the flags!

  10.         engfunc(EngFunc_TraceLine, start, end, IGNORE_GLASS | IGNORE_MONSTERS | IGNORE_MISSILE, ignore_ent, ptr)

  11.        

  12.         // We are interested in the fraction parameter

  13.         new fraction

  14.         get_tr2(ptr, TR_flFraction, fraction)

  15.        

  16.         // Free the trace handle (don't forget to do this!)

  17.         free_tr2(ptr)

  18.        

  19.         // If = 1.0 then it didn't hit anything!

  20.         return (fraction != 1.0)

  21. }
[/pawn]
Только я не совсем понял, что нужно писать в ignore_ent. Ибо я прописал туда 0, и функция не реагирует на стены никак (говорит что видим всегда).

Нет, я не решил написать ещё один анти-вх. Мне для других целей.

Заранее спасибо тем, кто хоть как-то поможет.
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Как проверить виден ли игрок? ( is_visible ?)

Сообщение Dg_INC » 10 апр 2012, 21:22

Я тоже мучаюсь с TraceLine. Она как-то криво обрабатывает препятствия.
id This is the entity to ignore when drawing the traceline.

Энтити которую будет игнорировать traceline при прорисовке.Вы должны зарегистрироваться, чтобы видеть ссылки.
Achievements[≈25%] Processing.... :Reopened
Аватара пользователя
Dg_INC
 
Сообщения: 112
Зарегистрирован: 18 янв 2011, 12:33
Откуда: Орёл
Благодарил (а): 11 раз.
Поблагодарили: 27 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike

Re: Как проверить виден ли игрок? ( is_visible ?)

Сообщение Chuvi » 10 апр 2012, 21:32

Dg_INC писал(а):Энтити которую будет игнорировать traceline при прорисовке.

Я это понимаю. Но мне не нужно ничего игнорировать.
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Как проверить виден ли игрок? ( is_visible ?)

Сообщение Dg_INC » 10 апр 2012, 21:53

[pawn]
  1. stock bool:doit_trace(index, entity)

  2. {

  3.         new Float:start[3], Float:end[3], Float:eye[3];

  4.  

  5.         pev(index, pev_origin, start);

  6.         pev(entity, pev_origin, end);

  7.         pev(index, pev_view_ofs, eye);

  8.         xs_vec_add(start, eye, start);

  9.        

  10.         new tr = create_tr2();

  11.         engfunc(EngFunc_TraceLine, start, end, DONT_IGNORE_MONSTERS, 0, tr);

  12.        

  13.         new Float:fraction;

  14.         get_tr2(tr, TR_flFraction, fraction);

  15.         free_tr2(tr);

  16.        

  17.         if (fraction == 1.0)

  18.         {

  19.                 return true;

  20.         }

  21.         return false;

  22. }
[/pawn]
Мой пследний вариант, при котором хоть как-то работало.
Achievements[≈25%] Processing.... :Reopened
Аватара пользователя
Dg_INC
 
Сообщения: 112
Зарегистрирован: 18 янв 2011, 12:33
Откуда: Орёл
Благодарил (а): 11 раз.
Поблагодарили: 27 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike

Re: Как проверить виден ли игрок? ( is_visible ?)

Сообщение Chuvi » 10 апр 2012, 22:00

ругается на xs_vec_add
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Как проверить виден ли игрок? ( is_visible ?)

Сообщение Chuvi » 10 апр 2012, 22:18

Проверил ещё раз "is_visible"
если цель убита и летает, то is_visible нормально работает.
если цель жива и бегает, то is_visible всегда возвращает 0.
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Как проверить виден ли игрок? ( is_visible ?)

Сообщение Dg_INC » 10 апр 2012, 23:49

Chuvi писал(а):ругается на xs_vec_add

[pawn]
  1. #include <xs>
[/pawn] - инклуд для расчётов(описание смотреть внутри)

Chuvi писал(а):Проверил ещё раз "is_visible"
если цель убита и летает, то is_visible нормально работает.
если цель жива и бегает, то is_visible всегда возвращает 0.

То есть, то что тебе надо?
зы. Если разберёшься с traceline дай знать.
Achievements[≈25%] Processing.... :Reopened
Аватара пользователя
Dg_INC
 
Сообщения: 112
Зарегистрирован: 18 янв 2011, 12:33
Откуда: Орёл
Благодарил (а): 11 раз.
Поблагодарили: 27 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike

Re: Как проверить виден ли игрок? ( is_visible ?)

Сообщение Chuvi » 11 апр 2012, 00:44

Нет, это совсем не то, что мне надо.
Мне нафиг сдался аимбот (а именно его-то я и пишу :-[ ) который будет целиться только по мёртвым игрокам.

А если он будет целиться по всем сразу, то... в общем "печалька"
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Как проверить виден ли игрок? ( is_visible ?)

Сообщение Chuvi » 11 апр 2012, 01:03

Dg_INC, как ни странно, Ваша функция работает точно так-же, как и is_visible()
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: Как проверить виден ли игрок? ( is_visible ?)

Сообщение Ser_UFL » 11 апр 2012, 10:58

Запомните, всегда по жизни вас будут красить вежливость и спокойствие, а не наезды и дешевые понты ;)
Аватара пользователя
Ser_UFL
 
Сообщения: 975
Зарегистрирован: 22 авг 2009, 19:30
Откуда: Hell
Благодарил (а): 276 раз.
Поблагодарили: 380 раз.
Языки программирования: Counter-Strike 1.6:
WebMod-scripts, little Pawn.

След.

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], Google [Bot] и гости: 5