Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 5 из 5
  1. #1
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±

    OnPlayerLeaveDynamicArea

    Привет. Сделал в OnPlayerLeaveDynamicArea кик игрока. Но из-за того что респавн начинается с нулевых координат, игрока кикает. Как это можно обойти?

    PHP код:
    #define MAX_ZONES 1
    new zones[MAX_ZONES];
    new 
    Float:zones_points_0[] = 
    {
        -
    3000.0,1410.0,-2706.0,1600.0,-2660.0,1598.0,-1740.0,1606.0,-1290.0,1516.0,-1280.0,1058.0,-1064.0,698.0,-820.0,344.0,-1062.0,-90.0,-1042.0,-376.0,
        -
    1116.0,-434.0,-1186.0,-538.0,-1222.0,-696.0,-1500.0,-726.0,-1634.0,-716.0,-1710.0,-664.0,-1780.0,-662.0,-1778.0,-1232.0,-1856.0,-1488.0,-1935.0,-1404.0,
        -
    2066.0,-1254.0,-2187.0,-1060.0,-2539.0,-867.0,-2808.0,-988.0,-3000.0,-972.0,-3000.0,1410.0
    };
    public 
    OnPlayerEnterDynamicArea(playeridareaid
    {
        for (new 
    zone 0zone MAX_ZONESzone++)
            if (
    areaid == zones[zone]) 
                
    //сообщение
        
    return 1;
    }
    public 
    OnPlayerLeaveDynamicArea(playeridareaid
    {
        for (new 
    zone 0zone MAX_ZONESzone++) 
        {
            if (
    areaid==zones[zone]) 
            {
                
    SetTimerEx("KickPublicSF"100false"i"playerid);
            }
        }
        return 
    1;
    }
    forward KickPublicSF(playerid);
    public 
    KickPublicSF(playerid)
        
    Kick(playerid); 

  2. #2
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Попробуйте игнорировать игрока первые несколько секунд после спавна. Сделайте массив на MAX_PLAYERS ячеек (можно даже использовать char при задании размера и вместо ячеек обращаться к отдельным байтам) и в него записывайте флаг игнора игрока (1) при спавне и сбрасывайте его при срабатывании таймера, а OnPlayerLeaveDynamicArea проверяйте флаг перед киком.
    И да, ещё есть возможность того, что игрок за те первые секунды куда-нибудь телепортируется читом, поэтому в таймерной функции проверяйте его нахождение в динамическом регионе.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Попробуйте игнорировать игрока первые несколько секунд после спавна. Сделайте массив на MAX_PLAYERS ячеек (можно даже использовать char при задании размера и вместо ячеек обращаться к отдельным байтам) и в него записывайте флаг игнора игрока (1) при спавне и сбрасывайте его при срабатывании таймера, а OnPlayerLeaveDynamicArea проверяйте флаг перед киком.
    И да, ещё есть возможность того, что игрок за те первые секунды куда-нибудь телепортируется читом, поэтому в таймерной функции проверяйте его нахождение в динамическом регионе.
    Кик при условии, если sfnk =1. При смерти я присваиваю 0. И через пару сек после спавна 1. Ну в общем как ты сказал.

  4. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Хмм, а если просто попробовать играть по правилам сервера и создать ещё одну динамическую зону в тех координатах, куда помещает игрока при кике? И уже если игрок в этой зоне, просто игнорировать его и не кикать. Хотя не знаю, будет ли это выгодно в плане оптимизации, ибо не особо вникал в реализацию системы, что дана в шапке темы
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Хмм, а если просто попробовать играть по правилам сервера и создать ещё одну динамическую зону в тех координатах, куда помещает игрока при кике? И уже если игрок в этой зоне, просто игнорировать его и не кикать. Хотя не знаю, будет ли это выгодно в плане оптимизации, ибо не особо вникал в реализацию системы, что дана в шапке темы
    Пробовал. Все равно кикакло. Я даже СФ и центр карты делал одной зоной.

 

 

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

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

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

Ваши права

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