Закрыть Привет! Если вы читаете это - Вы еще не зарегистрированы. Это займет не больше минуты. Нажмите здесь, чтобы пройти регистрацию в несколько простых шагов, чтобы пользоваться всеми возможностями нашего форума. Обратите внимание, запрещены непристойные, матерные, бессмысленные (цифры, случайный набор букв) ники. Удачи!

Тема: Разговор в машине

Показано с 1 по 10 из 16

  1. #1
    Пользователь

    Аватар для botanik26rus

    Статус: Оффлайн
    Регистрация:16.12.2012
    Сообщений:64
    Репутация:2 [+/-] 

    Разговор в машине

    Добрый вечер, товарищи и подруги.
    Набросал на коленке код заготовки разговора в машине.
    Объясняю подробно.
    Сообщения игроков сидящих в какой либо машине видны только им. Ну типо приватный разговор)))

    PHP код:
    if(IsPlayerInAnyVehicle(playerid)){ 
        new 
    idcartext,textcar[255];
        
    //Узнаем ид автомобиля
        
    idcartext GetPlayerVehicleID(playerid);
        foreach(
    Playeri){ //Прогоняем в цикле игрокофф
            
    if(IsPlayerInVehicle(i,idcartext)){ //Проверка игрока в авто
                
    format(textcarsizeof(textcar), "%s [М]: %s",Name(playerid),text);
                
    SendClientMessage(i,-1,textcar);
            }
        }

    Установка:
    Обязателен инклюд foreach
    Данный код вставляем в паблик OnPlayerText
    Готово!
    P.S. Name(playerid) - функция получения имени игрока по ид. Если у вас такой не имеется , то используйте стандартную функцию (гугол в помощь).
    Надеюсь кому-то пригодитсо.

    Ну и по традиции: этомойпервыйурокпрошунепинать
    Всем бобра и тепла!

    Скрин:

    Открыть спойлер

    [Скрыть]
    Последний раз редактировалось botanik26rus; 11.01.2018 в 22:07.
  2. 2 пользователей сказали cпасибо botanik26rus за это полезное сообщение:

    muv4ansky (11.01.2018), Shayba (13.01.2018)

  3. #2
    мастер спорта

    Аватар для muv4ansky

    Статус: Оффлайн
    Регистрация:30.10.2016
    Адрес:pawno-info.ru
    Сообщений:709
    Репутация:125 [+/-] 
    screen..

    VK: vk.com/muvik1337
    Услуги: Кликабельно


  4. #3
    Пользователь

    Аватар для botanik26rus

    Статус: Оффлайн
    Регистрация:16.12.2012
    Сообщений:64
    Репутация:2 [+/-] 
    Добавил))
  5. #4
    Пользователь

    Аватар для #Djuga

    Статус: Оффлайн
    Регистрация:21.09.2017
    Адрес:localhost
    Сообщений:1,071
    Репутация:377 [+/-] 
    Свои псевдо макросы, оставь при себе, или же выкладуй вместе с кодом
    Заблокированный
    Пользователь
    Профессионал
    Заблокированный
    Заблокированный
    Ньюсмейкер
    Заблокированный
    Пользователь
  6. #5
    Заблокирован

    Аватар для #iNoob

    Статус: Оффлайн
    Регистрация:11.01.2018
    Сообщений:19
    Репутация:3 [+/-] 
    Коллеги не пихайте скобочки на одну строку с кодом. Это же так по экономичному и не читабельному.
  7. #6
    Пользователь

    Аватар для AnToXa23

    Статус: Оффлайн
    Регистрация:16.02.2013
    Адрес:Алчевск
    Сообщений:296
    Репутация:27 [+/-] 
    Тогда уж так:

    PHP код:
    if(IsPlayerInAnyVehicle(playerid))
        {
            new 
    idcartext,textcar[255];
            
    //Узнаем ид автомобиля
            
    idcartext GetPlayerVehicleID(playerid);
            foreach(
    Playeri)
            { 
    //Прогоняем в цикле игрокофф
                
    if(IsPlayerInVehicle(i,idcartext))
                { 
    //Проверка игрока в авто
                    
    format(textcarsizeof(textcar), "%s [М]: %s",Name(playerid),text);
                    
    SendClientMessage(i,-1,textcar);
                }
            }
            return 
    0;
        } 
    А то чаты перемешаются, если не поставить return 0;
    Последний раз редактировалось AnToXa23; 02.02.2018 в 20:22.
  8. #7
    Пользователь

    Аватар для Lik

    Статус: Оффлайн
    Регистрация:14.06.2011
    Адрес:ульяновск
    Сообщений:168
    Репутация:53 [+/-] 
    PHP код:
    if(IsPlayerInVehicle(i,idcartext)) 
    можно так) чтоб не выделять ячейки памяти)
    PHP код:
    if(IsPlayerInVehicle(i,GetPlayerVehicleID(playerid))) 
    PS: авось кто знает как компилятор соберёт)
    Последний раз редактировалось Lik; 02.02.2018 в 21:17.
  9. #8
    Пользователь

    Аватар для botanik26rus

    Статус: Оффлайн
    Регистрация:16.12.2012
    Сообщений:64
    Репутация:2 [+/-] 
    Коллеги не пихайте скобочки на одну строку с кодом. Это же так по экономичному и не читабельному.
    Вот мне интересно... Почему так не надо ставить скобку? Может какойнить мануал есть как форматировать код? Мне так просто удобней например читать и чесно не вижу никакой разницы. Поясните пожалуйста.

    З.Ы. Жду адекватного ответа, а не так как всегда.
  10. #9
    Пользователь

    Аватар для #Djuga

    Статус: Оффлайн
    Регистрация:21.09.2017
    Адрес:localhost
    Сообщений:1,071
    Репутация:377 [+/-] 
    мммм, textcar[255], а ничего что в в чате максимум 144 символа...
    Заблокированный
    Пользователь
    Профессионал
    Заблокированный
    Заблокированный
    Ньюсмейкер
    Заблокированный
    Пользователь
  11. 1 пользователь сказал cпасибо #Djuga за это полезное сообщение:

    Naemnik43 (15.02.2018)

  12. #10
    Пользователь

    Аватар для shapegaz

    Статус: Оффлайн
    Регистрация:27.11.2016
    Сообщений:84
    Репутация:25 [+/-] 
    PHP код:
    if(IsPlayerInVehicle(i,idcartext)) 
    можно так) чтоб не выделять ячейки памяти)
    PHP код:
    if(IsPlayerInVehicle(i,GetPlayerVehicleID(playerid))) 
    PS: авось кто знает как компилятор соберёт)
    Слишком много времени уйдёт на функцию, лучше использовать переменную (ухудшать скорость ради 8 байт? серьёзно?).

    Я думаю удобнее было бы сделать команду, и вместо перебора игроков создать отдельный итератор.
    PHP код:
    new Iterator:PlayersInVehicle<MAX_PLAYERS>;

    public 
    OnPlayerDisconnect(playerid,reason)
    {
      
    Iter_Remove(PlayersInVehicle,playerid);
    }

    public 
    OnPlayerStateChange(playerid,newstate,oldstate)
    {
      if((
    newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER)) Iter_Add(PlayersInVehicle,playerid);
      else if((
    oldstate == PLAYER_STATE_DRIVER) || (oldstate == PLAYER_STATE_PASSENGER)) Iter_Remove(PlayersInVehicle,playerid);
    }

    CMD:vehchat(playeridparams[])
    {
      if(
    isnull(params)) return SendClientMessage(playerid,-1,"/vehchat [сообщение]");
      foreach(
    PlayersInVehiclei)
      {
        
    SendClientMessage(i,-1,params);
      } 
      return 
    1;

    Последний раз редактировалось shapegaz; 15.02.2018 в 14:10.
  13. 2 пользователей сказали cпасибо shapegaz за это полезное сообщение:

    #Djuga (15.02.2018), Naemnik43 (15.02.2018)

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

Ваши права

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