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

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 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
    Аватар для Londlem
    Модератор

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

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

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

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    767 ±
    Вам понадобится параметр 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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    PHP код:
    if(oldstate == PLAYER_STATE_DRIVERprintf("%d"GetPlayerAnimationIndex(playerid)); 
    Посмотрите ID анимации и уже от этих данных пляшите (может просто надо с запозданием проверку делать, а не сразу)
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    В общем, я решил вникнуть за Вас и выяснилось, что при падении с мотоцикла (именно падении. То бишь при ударе об объект, например) вызывается не только анимация под ID 2108, но и анимация с ID 1203. Я бы ещё проверил ID анимации, когда игрока сбивают с транспорта при аварии с другим игроком. Вы бы уже давно решили проблему, если бы просто взяли и самостоятельно сделали логирование (код я Вам давал. Нужно было лишь его вставить)
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

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

 

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

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

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

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

Ваши права

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