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

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±

    Не создаётся PTD

    Существует ли лимит на CreatePlayerTextDraw или можно ли его обойти? Почему-то не создаются PTD, которые создаются самые последние, я так понял, что это лимит. (ибо менял последнее создание PTD с предпоследним и всё нормально)

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

    Статус
    Оффлайн
    Регистрация
    11.07.2015
    Сообщений
    190
    Репутация:
    25 ±
    wiki.sa-mp.com/wiki/Limits

  3. Пользователь сказал cпасибо:
    execution (01.08.2019)
  4. #3
    Аватар для verteich
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2019
    Сообщений
    117
    Репутация:
    2 ±
    Лимит PlayerTextDraw 256, лично я создаю тд когда это нужно (к примеру игрок открыл инвентарь) и уничтожаю когда игрок закрывает инвентарь.
    А маленькие PlayerTextDraw создаются при коннекте.

  5. Пользователь сказал cпасибо:
    execution (01.08.2019)
  6. #4
    Аватар для DeimoS
    Модератор?

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

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

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

    Steve Pavlina

  7. Пользователь сказал cпасибо:
    execution (01.08.2019)
  8. #5
    Аватар для execution
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    UPD:

    Создаю перед просмотром, потом показываю - ничего не происходит.
    Создаю при подключении, потом показываю - всё нормально.

    Создаю 83 PTD, думал не успевает создаваться или ещё что-то, сделал показ через таймер на 1сек - всё равно не показывает.

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

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    Показываю:
    1. CDS_CreateTextDraw(playerid);
    2. CDS_UpdateCarInfo(playerid, pSelectedCarDealerShip{playerid});
    3. CDS_TextDrawShow(playerid);
    4.  
    5. SelectTextDraw(playerid, 0xD4D4D470);


    Функции:
    1. stock CDS_TextDrawShow(playerid)
    2. {
    3. for (new i = 0, c1 = 0, c2 = 0; i < sizeof BUY_AUTO[]; i++)
    4. {
    5. if (TD_MIN_CDS_COLOR_NUMBER_1 <= i <= TD_MAX_CDS_COLOR_NUMBER_1)
    6. {
    7. PlayerTextDrawColor(playerid, BUY_AUTO[playerid][i], CAR_DEALER_SHIP_COLOR_RGB[c1++]);
    8. }
    9. else if (TD_MIN_CDS_COLOR_NUMBER_2 <= i <= TD_MAX_CDS_COLOR_NUMBER_2)
    10. {
    11. PlayerTextDrawColor(playerid, BUY_AUTO[playerid][i], CAR_DEALER_SHIP_COLOR_RGB[c2++]);
    12. }
    13.  
    14. PlayerTextDrawShow(playerid, BUY_AUTO[playerid][i]);
    15. pShowPlayerCarDealerShipTD{playerid} = true;
    16. }
    17. }
    18.  
    19. stock CDS_UpdateCarInfo(playerid, selectModel)
    20. {
    21. stringer = "Model: ~y~";
    22. strcat(stringer, VehicleNames[CAR_DEALER_SHIP_MODEL[selectModel] - 400]);
    23. PlayerTextDrawSetString(playerid, BUY_AUTO[playerid][TD_CDS_CAR_MODEL_INFO_TD], stringer);
    24.  
    25. new
    26. car_speed[7];
    27. itos(gVehicleMaxSpeed[CAR_DEALER_SHIP_MODEL[selectModel] - 400], car_speed);
    28.  
    29. stringer = "MAX_SPEED: ~y~";
    30. strcat(stringer, car_speed);
    31. strcat(stringer, "_km/h");
    32. PlayerTextDrawSetString(playerid, BUY_AUTO[playerid][TD_CDS_CAR_MAX_SPEED_TD], stringer);
    33.  
    34. new
    35. car_price[16];
    36. itos(CAR_DEALER_SHIP_PRICE[selectModel], car_price);
    37.  
    38. stringer = "COST: ~y~$";
    39. strcat(stringer, car_price);
    40. PlayerTextDrawSetString(playerid, BUY_AUTO[playerid][TD_CDS_CAR_MODEL_PRICE_TD], stringer);
    41.  
    42. PlayerTextDrawHide(playerid, BUY_AUTO[playerid][TD_CDS_PREVIEW_CAR_MODEL_ID]);
    43. PlayerTextDrawSetPreviewModel(playerid, BUY_AUTO[playerid][TD_CDS_PREVIEW_CAR_MODEL_ID], CAR_DEALER_SHIP_MODEL[selectModel]);
    44. PlayerTextDrawSetPreviewVehCol(playerid, BUY_AUTO[playerid][TD_CDS_PREVIEW_CAR_MODEL_ID],
    45. pSelectedCarDealerShipColor_1{playerid},
    46. pSelectedCarDealerShipColor_2{playerid});
    47. PlayerTextDrawShow(playerid, BUY_AUTO[playerid][TD_CDS_PREVIEW_CAR_MODEL_ID]);
    48. }
    49.  
    50. stock CDS_CreateTextDraw(playerid)
    51. {
    52. BUY_AUTO[playerid][0] = CreatePlayerTextDraw(playerid, 159.500000, 204.437500, "");
    53. PlayerTextDrawLetterSize(playerid, BUY_AUTO[playerid][0], 0.000000, 0.000000);
    54. PlayerTextDrawTextSize(playerid, BUY_AUTO[playerid][0], 170.000000, 69.000000);
    55. PlayerTextDrawAlignment(playerid, BUY_AUTO[playerid][0], 1);
    56. PlayerTextDrawColor(playerid, BUY_AUTO[playerid][0], 252645375);
    57. PlayerTextDrawSetShadow(playerid, BUY_AUTO[playerid][0], 0);
    58. PlayerTextDrawSetOutline(playerid, BUY_AUTO[playerid][0], 0);
    59. PlayerTextDrawBackgroundColor(playerid, BUY_AUTO[playerid][0], 0);
    60. PlayerTextDrawFont(playerid, BUY_AUTO[playerid][0], 5);
    61. PlayerTextDrawSetProportional(playerid, BUY_AUTO[playerid][0], 0);
    62. PlayerTextDrawSetShadow(playerid, BUY_AUTO[playerid][0], 0);
    63. PlayerTextDrawSetPreviewModel(playerid, BUY_AUTO[playerid][0], 2153);
    64. PlayerTextDrawSetPreviewRot(playerid, BUY_AUTO[playerid][0], 0.000000, 284.000000, 76.000000, 1.564944);
    65. //etc
    66. }


    Опять таки, если создавать при подключении, то всё нормально

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну тот же TDEditor создаёт и тут же показывает текстдрав без каких-либо задержек между этими двумя действиями :)

    Логируй создаваемые ID и ID, которые выгружаются из переменных в PlayerTextDrawShow. Проблема точно в коде. В SA-MP нет проблем с тем, что текстдрав сразу показывается после создания.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  12. Пользователь сказал cпасибо:
    execution (03.08.2019)
  13. #9
    Аватар для execution
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.03.2018
    Сообщений
    255
    Репутация:
    24 ±
    Решено. Оказывается лимит уже был превышен и более позднее созданные PTD уже не показывались.

 

 

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

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

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

Ваши права

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