Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 9 из 9
  1. #1
    Аватар для codeo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.04.2014
    Сообщений
    108
    Репутация:
    9 ±

    Анти телепорт

    Подскажите как сделать проверку для анти телепорта через GetPlayerPos если игрок изменил позицию на 10м. то кик

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

    Статус
    Оффлайн
    Регистрация
    15.07.2014
    Сообщений
    19
    Репутация:
    1 ±
    PHP код:
    /* Global */
    new Float:pPos[MAX_PLAYERS][3];
    new 
    bool:newplayer[MAX_PLAYERS] = true;
    /* Global */

    public OnPlayerUpdate(playerid);
    {
    if(
    newplayers[MAX_PLAYERS] == false) if(!IsPlayerInRangeOfPoint(playerid,10.0,pPos[playerid][0],pPos[playerid][1],pPos[playerid][2]))
    {
    Kick(playerid);
    }
    GetPlayerPos(playerid,pPos[playerid][0],pPos[playerid][1],pPos[playerid][2]);
    newplayers[MAX_PLAYERS] = false;

    Примерно так думаю.
    Но это лишь набросок который криво будет работать.

    Нужно все тестировать и т.д.
    + Нужно учесть телепорт игрока сервером или админом. (при телепорте: GetPlayerPos(playerid,pPos[playerid][0],pPos[playerid][1],pPos[playerid][2]); )

  3. Пользователь сказал cпасибо:
    codeo (12.08.2014)
  4. #3
    Аватар для codeo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.04.2014
    Сообщений
    108
    Репутация:
    9 ±
    Спасибо большое, теперь понял

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

    Статус
    Оффлайн
    Регистрация
    24.04.2014
    Сообщений
    108
    Репутация:
    9 ±
    а если я сделаю так:
    то есть шанс что игрока кикнет?

    CMD:tp( playerid, params[ ] )
    {
    Tp_OK[playerid] = true;
    SetPlayerPos(playerid,304.7148,-1755.4130,7.6797);
    return 1;
    }



    if(Tp_OK[playerid] == false) if(!IsPlayerInRangeOfPoint(playerid,10.0,pPos[playerid][0],pPos[playerid]
    Kick(playerid)

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    PHP код:
    /* Global */
    new Float:pPos[MAX_PLAYERS][3];
    new 
    bool:newplayer[MAX_PLAYERS char] = true;

    stock SetPlayerPosEx(playeridFloat:xFloat:yFloat:z)
    {
        
    pPos[playerid][0] = x;
        
    pPos[playerid][1] = y;
        
    pPos[playerid][2] = z;
        
    newplayers{playerid} = true;
        
    SetPlayerPos(playeridxyz);
        return 
    1;
    }
    #define SetPlayerPos SetPlayerPosEx
    /* Global */
    public OnPlayerUpdate(playerid);
    {
        if(
    newplayers{playerid} == false)
        {
            if(!
    IsPlayerInRangeOfPoint(playerid,10.0,pPos[playerid][0],pPos[playerid][1],pPos[playerid][2])) return Kick(playerid);
        }
        
    GetPlayerPos(playerid,pPos[playerid][0],pPos[playerid][1],pPos[playerid][2]);
        
    newplayers{playerid} = false;
        return 
    1;

    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

  7. Пользователь сказал cпасибо:
    codeo (13.08.2014)
  8. #6
    Аватар для codeo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.04.2014
    Сообщений
    108
    Репутация:
    9 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    /* Global */
    new Float:pPos[MAX_PLAYERS][3];
    new 
    bool:newplayer[MAX_PLAYERS char] = true;

    stock SetPlayerPosEx(playeridFloat:xFloat:yFloat:z)
    {
        
    pPos[playerid][0] = x;
        
    pPos[playerid][1] = y;
        
    pPos[playerid][2] = z;
        
    newplayers{playerid} = true;
        
    SetPlayerPos(playeridxyz);
        return 
    1;
    }
    #define SetPlayerPos SetPlayerPosEx
    /* Global */
    public OnPlayerUpdate(playerid);
    {
        if(
    newplayers{playerid} == false)
        {
            if(!
    IsPlayerInRangeOfPoint(playerid,10.0,pPos[playerid][0],pPos[playerid][1],pPos[playerid][2])) return Kick(playerid);
        }
        
    GetPlayerPos(playerid,pPos[playerid][0],pPos[playerid][1],pPos[playerid][2]);
        
    newplayers{playerid} = false;
        return 
    1;

    При телепорте почему то иногда все равно орет(

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    PHP код:
    /* Global */
    new Float:pPos[MAX_PLAYERS][3];
    new 
    bool:newplayer[MAX_PLAYERS char] = true;

    stock SetPlayerPosEx(playeridFloat:xFloat:yFloat:z)
    {
        
    pPos[playerid][0] = x;
        
    pPos[playerid][1] = y;
        
    pPos[playerid][2] = z;
        
    newplayers{playerid} = true;
        
    SetPlayerPos(playeridxyz);
        return 
    1;
    }
    #define SetPlayerPos SetPlayerPosEx
    /* OnPlayerConnect */
    SetTimerEx("AntiTeleport"10000"i"playerid);

    forward AntiTeleport(playerid);
    public 
    AntiTeleport(playerid)
    {
        if(
    newplayers{playerid} == false)
        {
            if(!
    IsPlayerInRangeOfPoint(playerid10.0pPos[playerid][0], pPos[playerid][1], pPos[playerid][2])) return Kick(playerid);
            else return 
    newplayers{playerid} = true;
        }
        
    GetPlayerPos(playeridpPos[playerid][0], pPos[playerid][1], pPos[playerid][2]);
        
    newplayers{playerid} = false;
        return 
    1;

    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    24.04.2014
    Сообщений
    108
    Репутация:
    9 ±
    А как сделать проверку на координату Z, то есть если игрок падает, то чтобы код не выполнялся?

  11. #9
    Аватар для Londlem
    Модератор

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    767 ±
    PHP код:
    new
        
    Floatp_vel_z;

    GetPlayerVelocity(playeridp_vel_zp_vel_zp_vel_z);

    if(
    p_vel_z 0.0)
        
    // падает 

  12. 2 пользователя(ей) сказали cпасибо:
    codeo (24.08.2014)HarrWe (09.09.2016)
 

 

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

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

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

Ваши права

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