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

Тема: Проверка

  1. #1
    Аватар для #Jason
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.10.2015
    Сообщений
    38
    Репутация:
    0 ±

    Проверка

    Здравствуйте уважаемые пользователи pro-pawn.
    Сегодня я хотел узнать существует ли Функция которая срабатывает если игрок упадет с мотика.
    OnPlayerStateChange и OnPlayerExitVehicle не предлагать они не срабатывают когда игрок падает с мотика..
    Помогите буду очень благодарен..

    Наверное уже кто то понял для чего это

    PHP код:
        if(newstate == PLAYER_STATE_ONFOOT)  // когда игрок падает с мотика оно не сохраняет координаты и спавнит машину на том месте где выходил
        
    {
            new 
    Veh GetPlayerVehicleID(playerid);
               
    GetVehiclePos(Veh,AutoInfo[Veh][cPos][0],AutoInfo[Veh][cPos][1],AutoInfo[Veh][cPos][2]);
               
    GetVehicleZAngle(Veh,AutoInfo[Veh][cPos][3]);

        } 
    Последний раз редактировалось #Jason; 30.12.2015 в 17:20.

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Паблик OnPlayerStateChange как раз-таки должен срабатывать.
    После того как игрок упал с транспорта проверяйте его текущую анимацию с помощью функции GetPlayerAnimationIndex.

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

    Статус
    Оффлайн
    Регистрация
    18.10.2015
    Сообщений
    38
    Репутация:
    0 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Паблик OnPlayerStateChange как раз-таки должен срабатывать.
    После того как игрок упал с транспорта проверяйте его текущую анимацию с помощью функции GetPlayerAnimationIndex.
    можете подробнее с этого места??....

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Вам понадобится параметр oldstate из паблика OnPlayerStateChange. С помощью его вы проверяете: если в последний раз игрок находился в транспорте, то сравниваем его текущую анимацию, с помощью GetPlayerAnimationIndex.

    Как проверять?
    PHP код:
    if(oldstate == PLAYER_STATE_DRIVER)
    {
        if(
    GetPlayerAnimationIndex(playerid) == <ID>) // вместо ID вписываете тот ID, который вам нужен
        
    {
            
    // если игрок упал с транспорта
        
    }

    Как же узнать этот "ID" ?

    Код:
    PHP код:
    public OnPlayerUpdate(playerid)
    {
        new
            
    tmp_str[13];

        
    format(tmp_strsizeof(str), "%i"GetPlayerAnimationIndex(playerid));
        
    SendClientMessage(playerid, -1tmp_str);
        return 
    1;

    При каждом обновлении игрока на сервере ( Frame Per Second ) вам будет выведено сообщение в чат о том, какая ваша анимация на текущий момент используется.

    Попробуйте упасть, допустим, с мотоцикла и сразу уйти в AFK ( в режиме AFK паблик OnPlayerUpdate не вызывается ). После этого зайдите в чат-лог и вы увидите в чате последнее выведенное сообщение на сервере, то есть ID анимации падения с мотоцикла.

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

    Статус
    Оффлайн
    Регистрация
    18.10.2015
    Сообщений
    38
    Репутация:
    0 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Вам понадобится параметр oldstate из паблика OnPlayerStateChange. С помощью его вы проверяете: если в последний раз игрок находился в транспорте, то сравниваем его текущую анимацию, с помощью GetPlayerAnimationIndex.

    Как проверять?
    PHP код:
    if(oldstate == PLAYER_STATE_DRIVER)
    {
        if(
    GetPlayerAnimationIndex(playerid) == <ID>) // вместо ID вписываете тот ID, который вам нужен
        
    {
            
    // если игрок упал с транспорта
        
    }

    Как же узнать этот "ID" ?

    Код:
    PHP код:
    public OnPlayerUpdate(playerid)
    {
        new
            
    tmp_str[13];

        
    format(tmp_strsizeof(str), "%i"GetPlayerAnimationIndex(playerid));
        
    SendClientMessage(playerid, -1tmp_str);
        return 
    1;

    При каждом обновлении игрока на сервере ( Frame Per Second ) вам будет выведено сообщение в чат о том, какая ваша анимация на текущий момент используется.

    Попробуйте упасть, допустим, с мотоцикла и сразу уйти в AFK ( в режиме AFK паблик OnPlayerUpdate не вызывается ). После этого зайдите в чат-лог и вы увидите в чате последнее выведенное сообщение на сервере, то есть ID анимации падения с мотоцикла.
    Ну спасибо щас пойду проверять

  6. #6
    Аватар для #Jason
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.10.2015
    Сообщений
    38
    Репутация:
    0 ±
    Londlem та же самая история

    PHP код:
        if(oldstate == PLAYER_STATE_DRIVER)
        {
            if(
    GetPlayerAnimationIndex(playerid) == 1208)
            {
                
    car_ex[car] = true;
                   
    GetVehiclePos(car,AutoInfo[car][cPos][0],AutoInfo[car][cPos][1],AutoInfo[car][cPos][2]);
                   
    GetVehicleZAngle(car,AutoInfo[car][cPos][3]);
            }
        } 
    не помогло..

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    if(oldstate == PLAYER_STATE_DRIVERprintf("%d"GetPlayerAnimationIndex(playerid)); 
    Посмотрите ID анимации и уже от этих данных пляшите (может просто надо с запозданием проверку делать, а не сразу)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    18.10.2015
    Сообщений
    38
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    if(oldstate == PLAYER_STATE_DRIVERprintf("%d"GetPlayerAnimationIndex(playerid)); 
    Посмотрите ID анимации и уже от этих данных пляшите (может просто надо с запозданием проверку делать, а не сразу)
    если с запозданием сделать запишет те координаты где стоит машина а я хочу совсем по другому..

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    В общем, я решил вникнуть за Вас и выяснилось, что при падении с мотоцикла (именно падении. То бишь при ударе об объект, например) вызывается не только анимация под ID 2108, но и анимация с ID 1203. Я бы ещё проверил ID анимации, когда игрока сбивают с транспорта при аварии с другим игроком. Вы бы уже давно решили проблему, если бы просто взяли и самостоятельно сделали логирование (код я Вам давал. Нужно было лишь его вставить)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    18.10.2015
    Сообщений
    38
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    В общем, я решил вникнуть за Вас и выяснилось, что при падении с мотоцикла (именно падении. То бишь при ударе об объект, например) вызывается не только анимация под ID 2108, но и анимация с ID 1203. Я бы ещё проверил ID анимации, когда игрока сбивают с транспорта при аварии с другим игроком. Вы бы уже давно решили проблему, если бы просто взяли и самостоятельно сделали логирование (код я Вам давал. Нужно было лишь его вставить)
    Значит нужно сделать 2 проверки на анимацию? на 2108 и 1203

 

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

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

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

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

Ваши права

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