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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±

    Как лучше всего отображать карту на текстдравах нескольким игрокам одновременно?

    На TD карте нужно создать маркеры некоторым игрокам. Если у них переменная bag = true, то создается маркер с их позицией. А так же нужно это отобразить игрокам, у которых открыта карта open_map = true. Получается нужно в таймере делать 2 цикла foreach? Он глобальный, как и маркеры.
    Последний раз редактировалось DeimoS; 08.09.2019 в 10:54.

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

    Статус
    Оффлайн
    Регистрация
    01.09.2019
    Сообщений
    121
    Репутация:
    26 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    На TD карте нужно создать маркеры некоторым игрокам. Если у них переменная bag = true, то создается маркер с их позицией. А так же нужно это отобразить игрокам, у которых открыта карта open_map = true. Получается нужно в таймере делать 2 цикла foreach? Он глобальный, как и маркеры.
    Не совсем понял, но зачем цикл? При каких условиях bag = true и open_map = true? (Где устанавливаете значения)

    P.S: опишите, что хотите решить.
    Последний раз редактировалось tnc; 03.09.2019 в 22:51.

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от tnc Посмотреть сообщение
    Не совсем понял, но зачем цикл? При каких условиях bag = true и open_map = true? (Где устанавливаете значения)

    P.S: опишите, что хотите решить.
    Делаю TD карту. На ней нужно вывести иконки игроков (если их переменная bag равна true). Но так же это нужно показать всем игрокам, у которых открыта карта (если переменная open_map равна true). По моему мнению выходит 2 цикла. Первый перебирает всех игроков и создает иконки для игроков, а второй выводит все те иконки всем игрокам, у которых открыта карта.

    Таймер и TD глобальные. Таймер существует, когда хоть у одного игрока открыта карта.
    Последний раз редактировалось m1n1vv; 04.09.2019 в 09:52.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    А почему не сделать индивидуальные таймеры при просмотре карты? Получится тот же итератор, только без выделения кучи памяти и всяких циклов при взаимодействии с итератором (я про удаление/добавление игрока).

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    А почему не сделать индивидуальные таймеры при просмотре карты? Получится тот же итератор, только без выделения кучи памяти и всяких циклов при взаимодействии с итератором (я про удаление/добавление игрока).

    Глобальным таймером собираешь координаты игроков в массив (они ведь и для того же античита пригодятся), а уже когда игрок открывает карту - создаёшь индивидуальный таймер и отображаешь карту, используя сохранённые координаты.
    И делать все ТД иконок игроков для каждого игрока?

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    И делать все ТД иконок игроков для каждого игрока?
    Нет, зачем? У тебя же отображаются все игроки с переменной bag, равной true. Следовательно, все игроки, открывшие текстдрав карты, будут видеть одинаковых игроков на одинаковых позициях. Так что подойдёт глобальный текстдрав.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Нет, зачем? У тебя же отображаются все игроки с переменной bag, равной true. Следовательно, все игроки, открывшие текстдрав карты, будут видеть одинаковых игроков на одинаковых позициях. Так что подойдёт глобальный текстдрав.
    А не будет ли мигать? Ведь изменение позиции ТД - это пересоздание. Одному игроку показал, для следующего начал пересоздавать. И у первого ТД пропадает.

    Нужно, чтобы своя иконка была одного цвета, другие в разнобой. Или у одного игрока маркеры игроков допустим красные, а у другого зеленые.

    Скорей всего нужно создавать таймер во время открытия карты, и маркеры других игроков делать PlayerText.
    Последний раз редактировалось m1n1vv; 04.09.2019 в 21:51.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от m1n1vv Посмотреть сообщение
    А не будет ли мигать? Ведь изменение позиции ТД - это пересоздание. Одному игроку показал, для следующего начал пересоздавать. И у первого ТД пропадает.
    Нет, не будет. Зачем тебе для каждого отдельного игрока, открывшего карту, заново просчитывать координаты для текстдрава? Их просчитываешь в одном месте и там же создаёшь, а игрокам лишь отображаешь созданный ранее текстдрав.
    Наверное, тут всё же лучше будет сделать итератор на игроков, открывших карту + один таймер, в котором сначала будут создаваться текстдравы, а следом будет идти foreach-цикл на отображение созданных текстдравов игрокам. Можно, конечно, заморочиться и сделать всё на индивидуальных таймерах, выделив отдельный таймер на пересоздание текстдрава, но не думаю, что подобное усложнение кода сильно улучшит ситуацию с быстродействием (возможно, даже наоборот).

    Цитата Сообщение от m1n1vv Посмотреть сообщение
    Нужно, чтобы своя иконка была одного цвета, другие в разнобой. Или у одного игрока маркеры игроков допустим красные, а у другого зеленые.
    Цвет иконок спокойно изменится при помощи TextDrawColor. Изменения не отобразятся у игрока, пока ты по новой не покажешь текстрав игроку.
    То бишь, достаточно сделать такой код:

    И игроки будут видеть только тот цвет иконок, который они должны видеть.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Нет, не будет. Зачем тебе для каждого отдельного игрока, открывшего карту, заново просчитывать координаты для текстдрава? Их просчитываешь в одном месте и там же создаёшь, а игрокам лишь отображаешь созданный ранее текстдрав.
    Наверное, тут всё же лучше будет сделать итератор на игроков, открывших карту + один таймер, в котором сначала будут создаваться текстдравы, а следом будет идти foreach-цикл на отображение созданных текстдравов игрокам. Можно, конечно, заморочиться и сделать всё на индивидуальных таймерах, выделив отдельный таймер на пересоздание текстдрава, но не думаю, что подобное усложнение кода сильно улучшит ситуацию с быстродействием (возможно, даже наоборот).



    Цвет иконок спокойно изменится при помощи TextDrawColor. Изменения не отобразятся у игрока, пока ты по новой не покажешь текстрав игроку.
    То бишь, достаточно сделать такой код:

    И игроки будут видеть только тот цвет иконок, который они должны видеть.
    В будущем это реализую. Хотел аналогичное сделать, но запутался и реализовал через PlayerText.

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Я правильно тебя понял?

    1. TextDrawColor(playerid, td_map_player_market[playerid], -16776961);
    2. TextDrawShowForPlayer(playerid, td_map_player_market[playerid]);
    3.  
    4. bag = pInfo[playerid][pBag];
    5.  
    6. foreach (Player, i)
    7. {
    8. if (!td_map_open{i})
    9. continue;
    10.  
    11. if (!bag)
    12. continue;
    13.  
    14. if (i == playerid)
    15. continue;
    16.  
    17. TextDrawColor(i, td_map_player_market[playerid], -1);
    18. TextDrawShowForPlayer(i, td_map_player_market[playerid]);
    19. }
    Последний раз редактировалось m1n1vv; 07.09.2019 в 01:27.

 

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

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

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

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

Ваши права

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