Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 3 1 2 3 ПоследняяПоследняя
Показано с 1 по 10 из 28
  1. #1
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±

    Ограничение игровой зоны

    Всем привет.На повестке дня(ночи?) такая проблема:
    Есть массив из точек на карте,который потом используется для создания полигона.
    Мне нужно,чтобы игроки,когда выходили за пределы границы полигона, возвращались обратно.

    Сначала я решил задачу "в лоб" - каждую секунду сохранял позицию игрока,если он не в интерьере и в игровой зоне.Если он выходит за пределы границы полигона,то его возвращает на последние сохранившиеся координаты. Но как оказалось, через этот "барьер" легко пройти.

    Возникла еще идея: когда игрок вышел из игровой зоны,то его телепортировать к ближайшей точке полигона.Но было бы не совсем разумно телепортировать игрока в то место,где он не был(т.к. точки полигона - это его вершины, а если,допустим, игрок вышел между двумя вершинами,то его телепортнет к ближайшей,т.е. там где его не было). И тут тогда еще один вопрос возникает: как узнать промежуточные точки полигона? Т.е точки прямой,которая соединяет две вершины полигона.


    UPD: Только сейчас понял,что точки для полигона представлены только координатами X и Y(без Z). Поэтому мой вариант наверняка отметается,либо подключать ColAndreas или MapAndreas,что не очень хорошо. Поэтому жду идею)
    Ну а если у вас есть более разумная идея,то рад буду ее услышать.
    Последний раз редактировалось Profyan; 04.08.2016 в 13:00.



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  2. #2
    Аватар для Battista
    Пользователь

    Статус
    Оффлайн
    Регистрация
    27.02.2016
    Адрес
    Улан-Удэ
    Сообщений
    27
    Репутация:
    1 ±
    Кстати да, тоже бы хотел услышать решение
    Т.к тоже нашел точки полигона нашел и хочу ограничить для игрока остальные территории

  3. #3
    Аватар для Роуди.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.07.2015
    Сообщений
    154
    Репутация:
    17 ±
    Для меня так же актуально.
    Мои глаза от твоего кода лезут на гавно-инфо и создают тему о расстановке пикапов.

  4. #4
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Может быть каждую секунду чекать координаты игрока когда он на полигоне,
    а когда за ним не чекать и делать телепорт на последние сейвы координат?
    Я вот к каждому своему серву всегда пишу античит и там есть запись чтобы ловить NOP и прочюю ерунду на телепорты/аиры
    У меня бы допустим это был изи код, а Вам не знаю...
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  5. #5
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Может быть каждую секунду чекать координаты игрока когда он на полигоне,
    а когда за ним не чекать и делать телепорт на последние сейвы координат?
    Я вот к каждому своему серву всегда пишу античит и там есть запись чтобы ловить NOP и прочюю ерунду на телепорты/аиры
    У меня бы допустим это был изи код, а Вам не знаю...
    Сначала я решил задачу "в лоб" - каждую секунду сохранял позицию игрока,если он не в интерьере и в игровой зоне.Если он выходит за пределы границы полигона,то его возвращает на последние сохранившиеся координаты. Но как оказалось, через этот "барьер" легко пройти.
    На данный момент поставил сохранение координат раз в 5 секунд и в эти же 5 секунд проверяю флаг(игрок в полигоне или нет). Если в полигоне,то сохраняем координаты,иначе телепортируем на предыдущие сохраненные и никто не отменял код в колбеках OnPlayerEnterDynamicArea и OnPlayerLeaveDynamicArea.. Пришлось еще в OnPlayerInteriorChange делать флаг,если игрок в стандартном интерьере,то его не трогать.И пришлось в каждый телепорт в самописный интерьер,который находится вне границы полигона, тоже добавлять этот флаг.

    Не знаю на сколько это профитный вариант решения проблемы,но обычным способом не смог обойти. За читеров отвечает античит... И так же не знаю,на сколько этот способ оптимизирован и вообще имеет ли место быть?! Ибо столько костылей,но если это принять как должное для SA:MP, то все отлично)



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  6. #6
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Дааа, давайте, записывайте каждую секунду координаты, майтесь неведомой фигней, а потом спрашивайте, А ШО ТАК ВСЁ ТУПИТ!!!?!

    Делал уже такую систему. Объясню.
    Смотри. У тебя пользователь находится в границах полигона. Ты заранее можешь узнать центр полигона. При выходе с него - разворачиваешь игрока к центру полигона(SetPlayerFacingAngle / SetVehicleZAngle) и выталкиваешь с границ функцией Set(Player/Vehicle)Pos. Никаких таймеров и записей не надо.
    Последний раз редактировалось Seregamil; 06.08.2016 в 06:27.

  7. 2 пользователя(ей) сказали cпасибо:
    Battista (10.08.2016) Profyan (06.08.2016)
  8. #7
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    А ШО ТАК ВСЁ ТУПИТ!!!?!
    У меня что то не тупило не чего, хотя с моим то буком всё возможно
    А если у тебя винда 98 и пентиум первый это твои проблемы
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  9. #8
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    У меня что то не тупило не чего, хотя с моим то буком всё возможно
    А если у тебя винда 98 и пентиум первый это твои проблемы
    Да, у меня пентиум и 2гб оперативы.
    И да. при таких жутких лагах я выберу другой сервер и буду переманивать своих друзей туда. И эта логика у многих людей.

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

  10. 2 пользователя(ей) сказали cпасибо:
    Daniel_Cortez (06.08.2016) Osetin (06.08.2016)
  11. #9
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Дааа, давайте, записывайте каждую секунду координаты, майтесь неведомой фигней, а потом спрашивайте, А ШО ТАК ВСЁ ТУПИТ!!!?!

    Делал уже такую систему. Объясню.
    Смотри. У тебя пользователь находится в границах полигона. Ты заранее можешь узнать центр полигона. При выходе с него - разворачиваешь игрока к центру полигона(SetPlayerFacingAngle / SetVehicleZAngle) и выталкиваешь с границ функцией Set(Player/Vehicle)Pos. Никаких таймеров и записей не надо.
    Отличный вариант,но если допустим игрок телепортнулся очень далеко от полигона,то откуда я узнаю,на какое мне кол-во координат сдвигать?

    И еще: как узнать центр полигона?
    Последний раз редактировалось Profyan; 06.08.2016 в 20:11.



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  12. #10
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Да, у меня пентиум и 2гб оперативы.
    И да. при таких жутких лагах я выберу другой сервер и буду переманивать своих друзей туда. И эта логика у многих людей.

    Нужно делать для всех игроков, а не для тех, у кого мощные пекарни.
    Знаешь я тоже так говорил когда то и тут и ещё кое где в соц сети,
    но опять же какие друзья реальные? пойди в бар пивка с ними разлей и гуляйте
    виртуальные? боюсь что не все будут ради одного пипла играть с ним на малофункциональном сервере
    то что тут тебя лайкают поддерживают это не значит что вот так вот прям и будет, нет, я это уже прошёл,
    такие виртуозы сливаются толпой в один интересный серв потому что у них тянет и им там норм,
    а ты 1 тот который не смог там нормально играть и они тебе вечно говорят:
    - "обнови железо что ты как .... не знаю кто там"
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

 

 
Страница 1 из 3 1 2 3 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •