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

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

    Вопрос про NPC

    Здравствуйте. Я записал маршрут для NPC поезда. NPC катается по трем городам и в каждом городе останавливается на 30 секунд. Скрипт в отдельном файле. Подскажите, пожалуйста, как оповестить игроков о прибытии поезда? Нужно с помощью перехватов как-то?
    PHP код:
    #include <a_npc>
    main(){}

    new 
    stage;

    public 
    OnRecordingPlaybackEnd() 
    {
        if(
    stage != 2stage++;
        else 
    stage 0;
        
    SetTimer("Station"30000false);
    }

    public 
    OnNPCEnterVehicle(vehicleidseatid
    {
        
    SetTimer("Station"30000false);
    }

    forward Station();
    public 
    Station()
    {
        switch(
    stage)
        {
            case 
    0:
            {
                
    StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER"lstosf");
            }
            case 
    1:
            {
                
    StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER"sftolv");
            }
            case 
    2:
            {
                
    StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER"lvtols");
            }
        }
        return 
    1;


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

    Статус
    Оффлайн
    Регистрация
    08.12.2018
    Адрес
    Россия
    Сообщений
    146
    Репутация:
    25 ±
      Открыть/закрыть
    Цитата Сообщение от MisT1K Посмотреть сообщение
    Здравствуйте. Я записал маршрут для NPC поезда. NPC катается по трем городам и в каждом городе останавливается на 30 секунд. Скрипт в отдельном файле. Подскажите, пожалуйста, как оповестить игроков о прибытии поезда? Нужно с помощью перехватов как-то?
    PHP код:
    #include <a_npc>
    main(){}

    new 
    stage;

    public 
    OnRecordingPlaybackEnd() 
    {
        if(
    stage != 2stage++;
        else 
    stage 0;
        
    SetTimer("Station"30000false);
    }

    public 
    OnNPCEnterVehicle(vehicleidseatid
    {
        
    SetTimer("Station"30000false);
    }

    forward Station();
    public 
    Station()
    {
        switch(
    stage)
        {
            case 
    0:
            {
                
    StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER"lstosf");
            }
            case 
    1:
            {
                
    StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER"sftolv");
            }
            case 
    2:
            {
                
    StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER"lvtols");
            }
        }
        return 
    1;



    Я так понимаю функция public OnRecordingPlaybackEnd() вызывается когда поезд останавливается, поэтому алгоритм следующий:

    1. public OnRecordingPlaybackEnd()
    2. {
    3. if(stage != 2) stage++;
    4. else stage = 0;
    5. SetTimer("Station", 30000, false);
    6.  
    7. foreach(new i:Player) {
    8.  
    9. if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:x, Float:y, Float:z)) {
    10.  
    11. SendClientMessage(playerid, color, const message[]);
    12. }
    13. }
    14. }


    То есть, мы узнаем координаты где остановился поезд (можно просто создать их статически если остановок определенное количество), далее мы проверяем игроков на нахождение их в этом радиусе, если игрок находится в заданном радиусе - отправляем ему сообщение.

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

    Статус
    Оффлайн
    Регистрация
    05.07.2020
    Сообщений
    5
    Репутация:
    0 ±
    undefined symbol "foreach". Это же отдельный файл.
    Последний раз редактировалось MisT1K; 07.07.2020 в 12:45.

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

    Статус
    Оффлайн
    Регистрация
    22.04.2016
    Адрес
    Украина
    Сообщений
    157
    Репутация:
    35 ±
    1. #include <a_npc>
    2. main(){}
    3.  
    4. new train_stage;
    5.  
    6. public OnRecordingPlaybackEnd()
    7. {
    8. train_stage = train_stage != 2 ? train_stage+1 : 0;
    9. SetTimer("Station", 30000, false);
    10. return true;
    11. }
    12.  
    13. public OnNPCEnterVehicle(vehicleid, seatid)
    14. {
    15. SetTimer("Station", 30000, false);
    16. return true;
    17. }
    18.  
    19. forward Station();
    20. public Station()
    21. {
    22. new train_city[] = {!"lstosf", !"sftolv", !"lvtols"};
    23. StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER, train_city[train_stage]);
    24.  
    25. return SendClientMessageToAll(-1, !"Поезд прибыл на станцию!")
    26. }

  5. Пользователь сказал cпасибо:
    oukibt (08.07.2020)
  6. #5
    Аватар для MisT1K
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.07.2020
    Сообщений
    5
    Репутация:
    0 ±
    Цитата Сообщение от Pa4enka Посмотреть сообщение
    1. #include <a_npc>
    2. main(){}
    3.  
    4. new train_stage;
    5.  
    6. public OnRecordingPlaybackEnd()
    7. {
    8. train_stage = train_stage != 2 ? train_stage+1 : 0;
    9. SetTimer("Station", 30000, false);
    10. return true;
    11. }
    12.  
    13. public OnNPCEnterVehicle(vehicleid, seatid)
    14. {
    15. SetTimer("Station", 30000, false);
    16. return true;
    17. }
    18.  
    19. forward Station();
    20. public Station()
    21. {
    22. new train_city[] = {!"lstosf", !"sftolv", !"lvtols"};
    23. StartRecordingPlayback(PLAYER_RECORDING_TYPE_DRIVER, train_city[train_stage]);
    24.  
    25. return SendClientMessageToAll(-1, !"Поезд прибыл на станцию!")
    26. }
    undefined symbol "SendClientMessageToAll"

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Цитата Сообщение от MisT1K Посмотреть сообщение
    undefined symbol "SendClientMessageToAll"
    В начале подключи инклуд a_samp:

    1. #include <a_samp>

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от SteveStage Посмотреть сообщение
    В начале подключи инклуд a_samp:

    1. #include <a_samp>
    Лучше уж тогда подключить конкретную нативку, если только она нужна.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    05.10.2019
    Адрес
    Планета Земля
    Сообщений
    318
    Репутация:
    7 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Лучше уж тогда подключить конкретную нативку, если только она нужна.
    Компилятор Zeex'а:

    1. native SendClientMessageToAll(color, const message[]);


    Стандартный компилятор:

    1. native SendClientMessageToAll(color, message[]);

 

 

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

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

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

Ваши права

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