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

    Статус
    Оффлайн
    Регистрация
    31.07.2015
    Сообщений
    154
    Репутация:
    17 ±

    Ограничение игрового пространства.

    Здравствуйте, возник вопрос в доработке ( полной переработки ? ) функции
    В конечном итоге должен быть вот такой результат
    Но результат тот, что на видео и тот что показан в этой функции очень не точный и воспроизводит не тот эффект.
    Функция очень костыльная, тормозная и другие малоприятные эпитеты.
    Хотелось бы что бы к сий функции приложил руку опытный и грамотный человек, если не трудно.

    PHP код:
        new Floatangle,
            
    Floata,
            
    Floatb,
            
    Floatc,
            
    Floatd,
            
    Floatx,
            
    Floaty,
            
    Floatz;
        
    d=-1;
        
    c=1.0;

        if ( 
    GetPVarInt(playerid"fix_vixod") != 1)
        {
            if ( 
    areaid == dynamicZoneDeatMatch || areaid == pluc_dynamic )
            {
                
    GetPlayerPos(playeridxyz);
                 
    GetPlayerFacingAngle(playeridangle);
                
    angle+=180.0;
                if(
    angle 360.0angle-=360.0;
                
    SetPlayerFacingAngle(playeridangle);
                
    SetCameraBehindPlayer(playerid);
                
    angle=ConvertAngle(angle);
                if(
    angle==0.0 || angle==90.0 || angle==180.0 || angle==360.0angle-=0.0001;
                if(
    angle 90.0){ angle=90.0-(angle-90.0); d=1; }
                if(
    angle < -90.0){ angle=(90.0-((angle*-1)-90.0))*-1d=1; }
                
    a=c*floatsin(angle,degrees);
                
    b=floatsqroot(floatpower(c,2)-floatpower(a,2));
                
    b=b*d;

                
    SetPlayerPos(playeridx+by+az);
                    
    printf("[gz] %f | %f | %f"x+by+az);
            }
        }
        else
        {
             return 
    false;
        }
        return 
    true
    Спасибо.

    PHP код:
    if ( GetPVarInt(playerid"fix_vixod") != 1
    Вещь, которая не дает плееру спавнится на элеваторе ( хз как описать вообщем :) )
    Последний раз редактировалось Роуди.; 05.05.2018 в 00:47.
    Мои глаза от твоего кода лезут на гавно-инфо и создают тему о расстановке пикапов.

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

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

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

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

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

    Статус
    Оффлайн
    Регистрация
    10.04.2014
    Сообщений
    74
    Репутация:
    17 ±
    // dell
    Последний раз редактировалось whale; 29.10.2018 в 00:14.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    stock SomeFunc(playerid, &Float:x, &Float:yFloat:distance)
    {
        new 
    Float:a;
        
    GetPlayerPos(playeridxya);
        
    GetPlayerFacingAngle(playerida);
        
    += (distance floatsin(-adegrees));
        
    += (distance floatcos(-adegrees));
        return 
    1;
    }

    CMD:test(playeridparams[])
    {
        new
            
    Float:x,
            
    Float:y,
            
    Float:z;
        
    GetPlayerPos(playeridxyz);

        
    SomeFunc(playeridxy, -3.0);

        
    SetPlayerPos(playeridxyz);
        return 
    1;

    x, y - текущие координаты игрока
    distance - расстояние, на которое нужно откинуть относительно текущей точки (отрицательное значение - откинет назад. Положительное - вперёд)
    К этому добавь проверку на нахождение в нужной зоне и всё.


    Хотя что этот вариант, что твой - оба не очень надёжны, ибо игрок может успеть повернуть персонажа лицом к центру зоны, из-за чего игрока начнёт бесконечно выкидывать из центра (можно сделать костыль и спавнить игрока в центр зоны, если проверка сработает, например, 5 раз подряд).
    В идеале нужно работать с координатами самой зоны, сопоставляя их с позицией игрока.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  6. Пользователь сказал cпасибо:
    Роуди. (15.11.2018)
 

 

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

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

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

Ваши права

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