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

    Статус
    Оффлайн
    Регистрация
    01.01.2019
    Сообщений
    86
    Репутация:
    0 ±

    Правильно ли подсчитан размер массивов

    Здравствуйте.

    1) правильно ли здесь все сделано?
    мб попроще можно?
    1. new fmt_str[23 + ( -2 + 11 ) + 1];
    2. new fmt_strland[25 + ( -2 + 11 ) + 1];
    3. format(fmt_str, sizeof(fmt_str),"Баланс бизнеса: %i вирт", BizzInfo[i][bTill]);
    4. SendClientMessage(playerid,-1,fmt_str);
    5. format(fmt_strland,sizeof(fmt_strland),"Баланс 'LandTax': %i вирт",BizzInfo[i][bLandTax]);
    6. SendClientMessage(playerid,-1,fmt_strland);
    7. ShowPlayerDialog(playerid, 1846, 2, "Бизнес", "[0] Продать бизнес\n[1] Пополнить счет\n[2] Снять деньги\n[3] Баланс\n[4] Цена за товар\n[5] Цена за вход\n[6] Информация", "Выбрать", "Отмена");



    2) Подскажите как в данном случае подсчитывать ячейки
    1. stock GetFracName(i)
    2. {
    3. new ttext[32];
    4. switch(i)
    5. {
    6. case 1: ttext = "Police LS";
    7. case 2: ttext = "FBI";
    8. case 3: ttext = "Army SF";
    9. case 4: ttext = "Ìåäèêè";
    10. case 5: ttext = "La Cosa Nostra";
    11. case 6: ttext = "Yakuza";
    12. case 7: ttext = "Ìýðèÿ";
    13. case 8: ttext = "Casino";
    14. case 9: ttext = "News SF";
    15. case 10: ttext = "Police SF";
    16. case 11: ttext = "Àâòîøêîëà";
    17. case 12: ttext = "Ballas Gang";
    18. case 13: ttext = "Vagos Gang";
    19. case 14: ttext = "Ðóññêàÿ Ìàôèÿ";
    20. case 15: ttext = "Grove Street";
    21. case 16: ttext = "News LS";
    22. case 17: ttext = "Aztecas Gang";
    23. case 18: ttext = "Rifa Gang";
    24. case 19: ttext = "Army LV";
    25. case 20: ttext = "News LV";
    26. case 21: ttext = "Police LV";
    27. case 24: ttext = "Hell's Angels MC";
    28. case 26: ttext = "Warlocks MC";
    29. case 29: ttext = "Pagans MC";
    30. case 33: ttext = "Medics LV";
    31. case 22: ttext = "Medics LS";
    32. default: ttext = "-";
    33. }
    34. return ttext;
    35. }
    Последний раз редактировалось DeimoS; 08.03.2019 в 21:29. Причина: Соединил две темы с вопросами в одну

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

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

    2) Вообще - так же, как и в первом случае: находишь наибольшую строку и указываешь её размер. Но в твоём случае лучше вообще записать всё в сегмент данных, а не терзать стек лишними перезаписями данных.

    1. #define MAX_FRACT_NAME 17
    2. stock GetFracName(frac_id)
    3. {
    4. static const frack_name_list[][MAX_FRACT_NAME] =
    5. {
    6. "-",
    7. "Police LS",
    8. "FBI",
    9. "Army SF",
    10. "Медики",
    11. "La Cosa Nostra",
    12. "Yakuza",
    13. "Мэрия",
    14. "Casino",
    15. "News SF",
    16. "Police SF",
    17. "Автошкола",
    18. "Ballas Gang",
    19. "Vagos Gang",
    20. "Русская Мафия",
    21. "Grove Street",
    22. "News LS",
    23. "Aztecas Gang",
    24. "Rifa Gang",
    25. "Army LV",
    26. "News LV",
    27. "Police LV",
    28. "Hell's Angels MC",
    29. "Warlocks MC",
    30. "Pagans MC",
    31. "Medics LV",
    32. "Medics LS"
    33. };
    34. new idx;
    35. switch(frac_id)
    36. {
    37. case 1: idx = 1;
    38. case 2: idx = 2;
    39. case 3: idx = 3;
    40. case 4: idx = 4;
    41. case 5: idx = 5;
    42. case 6: idx = 6;
    43. case 7: idx = 7;
    44. case 8: idx = 8;
    45. case 9: idx = 9;
    46. case 10: idx = 10;
    47. case 11: idx = 11;
    48. case 12: idx = 12;
    49. case 13: idx = 13;
    50. case 14: idx = 14;
    51. case 15: idx = 15;
    52. case 16: idx = 16;
    53. case 17: idx = 17;
    54. case 18: idx = 18;
    55. case 19: idx = 19;
    56. case 20: idx = 20;
    57. case 21: idx = 21;
    58. case 24: idx = 24;
    59. case 26: idx = 26;
    60. case 29: idx = 29;
    61. case 33: idx = 33;
    62. case 22: idx = 22;
    63. }
    64. return frack_name_list[idx];
    65. }

     Ну или вот так сократить, так как большая часть фракций по порядку идёт
    1. #define MAX_FRACT_NAME 17
    2. stock GetFracName(frac_id)
    3. {
    4. static const frack_name_list[][MAX_FRACT_NAME] =
    5. {
    6. "-",
    7. "Police LS",
    8. "FBI",
    9. "Army SF",
    10. "Медики",
    11. "La Cosa Nostra",
    12. "Yakuza",
    13. "Мэрия",
    14. "Casino",
    15. "News SF",
    16. "Police SF",
    17. "Автошкола",
    18. "Ballas Gang",
    19. "Vagos Gang",
    20. "Русская Мафия",
    21. "Grove Street",
    22. "News LS",
    23. "Aztecas Gang",
    24. "Rifa Gang",
    25. "Army LV",
    26. "News LV",
    27. "Police LV",
    28. "Hell's Angels MC",
    29. "Warlocks MC",
    30. "Pagans MC",
    31. "Medics LV",
    32. "Medics LS"
    33. };
    34. new idx;
    35. switch(frac_id)
    36. {
    37. case 1..22: idx = i;
    38. case 24: idx = 24;
    39. case 26: idx = 26;
    40. case 29: idx = 29;
    41. case 33: idx = 33;
    42. }
    43. return frack_name_list[idx];
    44. }


    Хотя ещё лучше сделать ID фракций по порядку, поместить этот массив в начало мода и во всех случаях, когда нужно получить имя фракции, обращаться к массиву напрямую.


    И не забывай про тему Короткие вопросы [Вопрос:Ответ]. Пока что объединю две последние темы в одну
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  3. Пользователь сказал cпасибо:
    DmitriyVasilev (08.03.2019)
 

 

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

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

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

Ваши права

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