• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Создание TextDraw

Redoreck

Компетентный
Как можно сделать лучшее?
У нас есть 16 слотов (4 в ширину и 4 в длину), и возле выбраного нужно создать TextDraw действие.
Я сделал вот так:
PHP:
stock SelectMenu(playerid, slot) {
    new
        Float: pos_X,        // X Позиция для создания Действия
        Float: pos_Y,        // Y Позиция для создания Действия
        save_slot = slot     // Сохраним выбранный слот для того, чтобы перебрать в switch
    ;

    switch(slot) {
        case 0..3: {
            pos_Y = 0;           // Слот 0..3 находится на стандартной позиции, поэтому не меняем
            pos_X = 38.0 * slot; // Расстояние для создания TextDraw действия 38 и умножаем на выбранный нами слот.
        }
        case 4..7: {
            pos_Y = 38.0;        // Слот 4..7 находится ниже, и поэтому расстояние для него 38.0
            save_slot -= 4;      // Минусуем -4, чтобы началось с выбранного слота.
            pos_X = 38.0 * save_slot; // И.т.д.
        }
        case 8..11: {
            pos_Y = 38.0 * 2;    // Слот 8..11 находится на 3 позиции и поэтому расстояние для него 38.0 * 2
            save_slot -= 8;
            pos_X = 38.0 * save_slot;
        }
        case 12..15: {
            pos_Y = 38.0 * 3;
            save_slot -= 12;
            pos_X = 38.0 * save_slot;
        }
    }

    gSelectMenuTextDraw[playerid][SELECT_MENU] =
    CreatePlayerTextDraw         (playerid, 500.0 + pos_X, 250.0 + pos_Y, !"_");
    PlayerTextDrawLetterSize     (playerid, gSelectMenuTextDraw[playerid][SELECT_MENU], 0.0, 1.0);
    PlayerTextDrawTextSize       (playerid, gSelectMenuTextDraw[playerid][SELECT_MENU], 0.0, 42.0);
    PlayerTextDrawColor          (playerid, gSelectMenuTextDraw[playerid][SELECT_MENU], -1);
    PlayerTextDrawBoxColor       (playerid, gSelectMenuTextDraw[playerid][SELECT_MENU], 255);
    PlayerTextDrawUseBox         (playerid, gSelectMenuTextDraw[playerid][SELECT_MENU], 1);
    PlayerTextDrawAlignment      (playerid, gSelectMenuTextDraw[playerid][SELECT_MENU], 2);

    // И.т.д
}
Как можно сделать более лучшее?
 
Последнее редактирование:
Сверху Снизу