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

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13
  1. #1
    Аватар для XemyL
    Пользователь

    Статус
    Оффлайн
    Регистрация
    30.11.2013
    Сообщений
    26
    Репутация:
    25 ±

    Облегчаем работу с TextDraw

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

    Итак, мы имеет огромный код трёх TextDraw в виде обычного текста:
    PHP код:
    TextDraw[0] = CreatePlayerTextDraw(playerid210.000000176.000000"Текст 1");
    PlayerTextDrawColor(playeridTextDraw[0], -6736897);
    PlayerTextDrawSetOutline(playeridTextDraw[0], 1);
    PlayerTextDrawSetProportional(playeridTextDraw[0], 1);
    PlayerTextDrawSetShadow(playeridTextDraw[0], 1);
    PlayerTextDrawAlignment(playeridTextDraw[0], 1);
    PlayerTextDrawLetterSize(playeridTextDraw[0], 0.52.1);
    PlayerTextDrawFont(playeridTextDraw[0], 1);

    TextDraw[1] = CreatePlayerTextDraw(playerid220.000000186.000000"Текст 2");
    PlayerTextDrawColor(playeridTextDraw[1], -6736897);
    PlayerTextDrawSetOutline(playeridTextDraw[1], 1);
    PlayerTextDrawSetProportional(playeridTextDraw[1], 1);
    PlayerTextDrawSetShadow(playeridTextDraw[1], 1);
    PlayerTextDrawAlignment(playeridTextDraw[1], 1);
    PlayerTextDrawLetterSize(playeridTextDraw[1], 0.52.1);
    PlayerTextDrawFont(playeridTextDraw[1], 1);

    TextDraw[2] = CreatePlayerTextDraw(playerid230.000000196.000000"Текст 3");
    PlayerTextDrawColor(playeridTextDraw[2], -6736897);
    PlayerTextDrawSetOutline(playeridTextDraw[2], 1);
    PlayerTextDrawSetProportional(playeridTextDraw[2], 1);
    PlayerTextDrawSetShadow(playeridTextDraw[2], 1);
    PlayerTextDrawAlignment(playeridTextDraw[2], 1);
    PlayerTextDrawLetterSize(playeridTextDraw[2], 0.52.1);
    PlayerTextDrawFont(playeridTextDraw[2], 1); 
    Что мы тут видим? Кучу повторяющихся строк, где меняется только цифра (ячейка массива).
    Всё это можно внести в цикл и получится маленький и аккуратный код:

    PHP код:
    TextDraw[0] = CreatePlayerTextDraw(playerid210.000000176.000000"Текст 1");
    TextDraw[1] = CreatePlayerTextDraw(playerid220.000000186.000000"Текст 2");
    TextDraw[2] = CreatePlayerTextDraw(playerid230.000000196.000000"Текст 3");
        
    for(new 
    A!= 3A++)
    {
        
    PlayerTextDrawColor(playeridTextDraw[A], -6736897);
        
    PlayerTextDrawSetOutline(playeridTextDraw[A], 1);
        
    PlayerTextDrawSetProportional(playeridTextDraw[A], 1);
        
    PlayerTextDrawSetShadow(playeridTextDraw[A], 1);
        
    PlayerTextDrawAlignment(playeridTextDraw[A], 1);
        
    PlayerTextDrawLetterSize(playeridTextDraw[A], 0.52.1);
        
    PlayerTextDrawFont(playeridTextDraw[A], 1);

    Вот и всё. Удачи в программировании!

  2. #2
    Аватар для Копюшон
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2013
    Сообщений
    96
    Репутация:
    13 ±
    Очень полезный урок, всегда так делал :)

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    А я всегда запихивал текстдравы в отдельный инклюд и подключение инклюда вставлял в OnGameModeInit. Так же и с объектами/авто поступал. И всё у меня в жизни хорошо
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    30.11.2013
    Сообщений
    26
    Репутация:
    25 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    А я всегда запихивал текстдравы в отдельный инклюд и подключение инклюда вставлял в OnGameModeInit. Так же и с объектами/авто поступал. И всё у меня в жизни хорошо
    Это размер кода не уменьшает.

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Цитата Сообщение от XemyL Посмотреть сообщение
    Это размер кода не уменьшает.
    А разве от размера кода увеличивается производительность? Или то, что я создаю 10 текстдравов напрямую, а вы через цикл - что-то меняет?
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    30.11.2013
    Сообщений
    26
    Репутация:
    25 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    А разве от размера кода увеличивается производительность? Или то, что я создаю 10 текстдравов напрямую, а вы через цикл - что-то меняет?
    Размер выходного файла и время компиляции.

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

    Статус
    Оффлайн
    Регистрация
    03.05.2013
    Сообщений
    242
    Репутация:
    6 ±
    У меня вот разные координаты, как их оптимизировать? Покажите пример.
    PHP код:
        Banditraw[0] = TextDrawCreate(138.000000181.000000".");
        
    TextDrawBackgroundColor(Banditraw[0], BACKGROUNG);
        
    TextDrawFont(Banditraw[0], 1);
        
    TextDrawLetterSize(Banditraw[0], 0.50000014.000000);
        
    TextDrawColor(Banditraw[0], 255);
        
    TextDrawSetOutline(Banditraw[0], 0);
        
    TextDrawSetProportional(Banditraw[0], 1);
        
    TextDrawUseBox(Banditraw[0], 1);
        
    TextDrawBoxColor(Banditraw[0], BACKGROUNG);
        
    TextDrawTextSize(Banditraw[0], 528.00000068.000000);

        
    Banditraw[1] = TextDrawCreate(138.000000160.000000"Slot Machine");
        
    TextDrawBackgroundColor(Banditraw[1], BACKGROUNG);
        
    TextDrawFont(Banditraw[1], 3);
        
    TextDrawLetterSize(Banditraw[1], 0.5499991.700000);
        
    TextDrawColor(Banditraw[1], -1);
        
    TextDrawSetOutline(Banditraw[1], 0);
        
    TextDrawSetProportional(Banditraw[1], 1);
        
    TextDrawSetShadow(Banditraw[1], 1);
        
    TextDrawUseBox(Banditraw[1], 1);
        
    TextDrawBoxColor(Banditraw[1], BACKGROUNG);
        
    TextDrawTextSize(Banditraw[1], 262.0000000.000000);

        
    Banditraw[2] = TextDrawCreate(191.000000206.000000".");
        
    TextDrawBackgroundColor(Banditraw[2], FIELD_BACKGROUND);
        
    TextDrawFont(Banditraw[2], 1);
        
    TextDrawLetterSize(Banditraw[2], 0.5000008.000000);
        
    TextDrawColor(Banditraw[2], FIELD_BACKGROUND);
        
    TextDrawSetOutline(Banditraw[2], 0);
        
    TextDrawSetProportional(Banditraw[2], 1);
        
    TextDrawUseBox(Banditraw[2], 1);
        
    TextDrawBoxColor(Banditraw[2], FIELD_BACKGROUND);
        
    TextDrawTextSize(Banditraw[2], 474.0000000.000000);


        
    Banditraw[4] = TextDrawCreate(227.000000213.000000"]");
        
    TextDrawBackgroundColor(Banditraw[4], 255);
        
    TextDrawFont(Banditraw[4], 2);
        
    TextDrawLetterSize(Banditraw[4], 1.7600006.399999);
        
    TextDrawColor(Banditraw[4], -1);
        
    TextDrawSetOutline(Banditraw[4], 0);
        
    TextDrawSetProportional(Banditraw[4], 1);
        
    TextDrawSetShadow(Banditraw[4], 1);

        
    Banditraw[5] = TextDrawCreate(307.000000213.000000"]");
        
    TextDrawBackgroundColor(Banditraw[5], 255);
        
    TextDrawFont(Banditraw[5], 2);
        
    TextDrawLetterSize(Banditraw[5], 1.7600006.399999);
        
    TextDrawColor(Banditraw[5], -1);
        
    TextDrawSetOutline(Banditraw[5], 0);
        
    TextDrawSetProportional(Banditraw[5], 1);
        
    TextDrawSetShadow(Banditraw[5], 1);

        
    Banditraw[6] = TextDrawCreate(397.000000213.000000"]");
        
    TextDrawBackgroundColor(Banditraw[6], 255);
        
    TextDrawFont(Banditraw[6], 2);
        
    TextDrawLetterSize(Banditraw[6], 1.7600006.399999);
        
    TextDrawColor(Banditraw[6], -1);
        
    TextDrawSetOutline(Banditraw[6], 0);
        
    TextDrawSetProportional(Banditraw[6], 1);
        
    TextDrawSetShadow(Banditraw[6], 1);

        
    Banditraw[3] = TextDrawCreate(476.000000314.000000".");
        
    TextDrawBackgroundColor(Banditraw[3], BACKGROUNG);
        
    TextDrawFont(Banditraw[3], 3);
        
    TextDrawLetterSize(Banditraw[3], 0.6800002.300001);
        
    TextDrawColor(Banditraw[3], 0x00000000);
        
    TextDrawSetOutline(Banditraw[3], 0);
        
    TextDrawSetProportional(Banditraw[3], 1);
        
    TextDrawUseBox(Banditraw[3], 1);
        
    TextDrawBoxColor(Banditraw[3], BACKGROUNG);
        
    TextDrawTextSize(Banditraw[3], 528.000000, -40.000000);

        
    Banditraw[7] = TextDrawCreate(486.000000317.000000"EXIT");
        
    TextDrawBackgroundColor(Banditraw[7], 255);
        
    TextDrawFont(Banditraw[7], 3);
        
    TextDrawLetterSize(Banditraw[7], 0.5099991.300000);
        
    TextDrawColor(Banditraw[7], -1);
        
    TextDrawSetOutline(Banditraw[7], 0);
        
    TextDrawSetProportional(Banditraw[7], 1);
        
    TextDrawSetShadow(Banditraw[7], 1);
        
    TextDrawSetSelectable(Banditraw[7], 1);

        
    Banditraw[8] = TextDrawCreate(241.000000357.000000".");
        
    TextDrawBackgroundColor(Banditraw[8], BLACK_PLUS);
        
    TextDrawFont(Banditraw[8], 1);
        
    TextDrawLetterSize(Banditraw[8], 0.5000003.299999);
        
    TextDrawColor(Banditraw[8], 0x00000000);
        
    TextDrawSetOutline(Banditraw[8], 0);
        
    TextDrawSetProportional(Banditraw[8], 1);
        
    TextDrawUseBox(Banditraw[8], 1);
        
    TextDrawBoxColor(Banditraw[8], BLACK_PLUS);
        
    TextDrawTextSize(Banditraw[8], 410.00000030.000000);

        
    Banditraw[9] = TextDrawCreate(292.000000357.000000"ROLL");
        
    TextDrawBackgroundColor(Banditraw[9], 255);
        
    TextDrawFont(Banditraw[9], 3);
        
    TextDrawLetterSize(Banditraw[9], 1.1000003.100000);
        
    TextDrawColor(Banditraw[9], -1);
        
    TextDrawSetOutline(Banditraw[9], 0);
        
    TextDrawSetProportional(Banditraw[9], 1);
        
    TextDrawSetShadow(Banditraw[9], 1);
        
    TextDrawSetSelectable(Banditraw[9], 1);

        
    Banditraw[10] = TextDrawCreate(396.000000339.000000"]");
        
    TextDrawBackgroundColor(Banditraw[10], 255);
        
    TextDrawFont(Banditraw[10], 2);
        
    TextDrawLetterSize(Banditraw[10], 1.0100003.399999);
        
    TextDrawColor(Banditraw[10], -16776961);
        
    TextDrawSetOutline(Banditraw[10], 0);
        
    TextDrawSetProportional(Banditraw[10], 1);
        
    TextDrawSetShadow(Banditraw[10], 1);

        
    Banditraw[11] = TextDrawCreate(220.000000339.000000"]");
        
    TextDrawBackgroundColor(Banditraw[11], 255);
        
    TextDrawFont(Banditraw[11], 2);
        
    TextDrawLetterSize(Banditraw[11], 1.0100003.399999);
        
    TextDrawColor(Banditraw[11], -16776961);
        
    TextDrawSetOutline(Banditraw[11], 0);
        
    TextDrawSetProportional(Banditraw[11], 1);
        
    TextDrawSetShadow(Banditraw[11], 1); 

  8. #8
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    375
    Репутация:
    144 ±
    Сокращение кода методом повторения кода в цикле, применяется только при одинаковых параметрах Textdraw's. Т.е если у тебя куча одинаковых надписей но с разным расположением по экрану, то выше рекомендованный способ, полезен.

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

    Статус
    Оффлайн
    Регистрация
    19.04.2014
    Адрес
    Уфа, Россия
    Сообщений
    313
    Репутация:
    51 ±
    Там же всё на примере объяснили, если только отличаеться координаты расположения текста то можно делать через цикл

    PHP код:
        Banditraw[0] = TextDrawCreate(396.000000339.000000"]");
        
    Banditraw[1] = TextDrawCreate(220.000000339.000000"]");
        
        for(new 
    A!= 2A++) 
        {    
            
    TextDrawBackgroundColor(Banditraw[A], 255);
            
    TextDrawFont(Banditraw[A], 2);
            
    TextDrawLetterSize(Banditraw[A], 1.0100003.399999);
            
    TextDrawColor(Banditraw[A], -16776961);
            
    TextDrawSetOutline(Banditraw[A], 0);
            
    TextDrawSetProportional(Banditraw[A], 1);
            
    TextDrawSetShadow(Banditraw[A], 1);
        } 

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

    Статус
    Оффлайн
    Регистрация
    14.04.2014
    Адрес
    Omsk, Russia
    Сообщений
    351
    Репутация:
    49 ±
    Если тебе не нужны кликабельные текстдравы или текстдравы, которые будут использовать SetString, то можно создавать тупо один текстдрав, используя \n,\t и т.п.
    Skype: sp3ctrum_attack

 

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

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

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

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

Ваши права

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