Здравствуйте, можно узнать?
можно ли везде использовать автоподсчёт от Corteza а когда лучше будет просто использовать ручной подсчет.
И объясните каким образом тут подсчитаны ячейки, спасибо огромное!
new string[29+(-2+10)+1];
Здравствуйте, можно узнать?
можно ли везде использовать автоподсчёт от Corteza а когда лучше будет просто использовать ручной подсчет.
И объясните каким образом тут подсчитаны ячейки, спасибо огромное!
new string[29+(-2+10)+1];
Можно, конечно, но во многих случаях код подсчёта может занимать гораздо больше места, чем сама функция, в которой будет выводиться сообщение. То бишь, в определённых случаях гораздо практичнее подсчитать вручную, ибо код будет более компактным и опрятным. Но если тебя устраивает "раздутость" с автоподсчётом - можешь пользоваться им. Хуже в плане производительности от этого не будет.
"29" - это число символов в изначальной строке -> "С 01.01.1970 прошло %d секунд"
"-2" - это учёт заполнителя "%d" (заполнители при форматировании заменяются на данные, которые передаются в строку (в данном случае это значение gettime) => нам не нужно учитывать эти 2 символа при подсчёте)
"10" - это максимальное количество символов, которые могут быть возвращены функцией "gettime()"
"+1" в конце - это учёт нуль-символа
Вообще формулу можно составлять по всякому. Я, например, предпочитаю не прописывать явно вычет заполнителя (те самые "-2"), а учитывать их сразу при подсчёте длины строки. То бишь, я бы написал сразу "27" вместо "29" и формула у меня выглядела бы так
Не принципиально как ты будешь составлять формулы (хотя предпочтительнее делать это по какому-то общему шаблону, чтоб в будущем, если появится нужда изменить строку и пересчитать её длину, это можно было сделать с лёгкостью, изменив лишь часть формулы, а не пересчитывая её по новой). При желании, можешь вообще не составлять формулу, а сразу писать готовое число (но тогда, в случае изменения строки, его придётся пересчитывать по новой), а-ля:PHP код:
new string[27+10+1];
- - - Добавлено - - -PHP код:
new string[38];//27+10+1 = 38
Например, так команда выглядела с автопосчётом:
А так она выглядит сейчас:
Там, конечно, помимо отказа от автоподсчёта, есть ещё некоторые изменения, но, в целом, видно, что в данном случае автоподсчёт только "раздувал" код команды. В итоге, если такой автоподсчёт использовать повсеместно, что приличный процент кода будет занимать только этот самый автоподсчёт. А чем больше кода, тем труднее его поддерживать, ибо, как минимум, приходится дольше искать тот или иной участок кода. Вот тут я ещё несколько "проблемных мест", по моему мнению, описывал касаемо автоподсчёта.
В целом, лично я так и не нашёл применение для автоподсчёта. Для меня гораздо практичнее и быстрее использовать функционал редактора кода, который подсчитывает выделенный текст
дабы получившееся значение в дальнейшем использовать при составлении формулы (как показал в предыдущем сообщении). Но это ни в коем случае не призыв к отказу от автоподсчёта. Используй то, что тебе удобнее. Главное научись правильно составлять формулу, ибо иначе от этого может быть больше проблем, чем пользы.
Последний раз редактировалось DeimoS; 03.03.2019 в 13:24.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
а куда ответ ваш делся
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 128974801 bytes) in /var/www/u0253307/data/www/pro-pawn.ru/includes/functions_threadedmode.php on line 23
мне пишет когда нажимаю на ваш ответ из раздела форум, а здесь только мои сообщения
я правильно сосчитал?
new bandprotect[24], bandattack[24]; switch(GZInfo[i][gFrakVlad]) { case 12: bandprotect="Ballas"; case 13: bandprotect="Vagos"; case 15: bandprotect="Grove"; case 17: bandprotect="Aztecas"; case 18: bandprotect="Rifa"; } switch(User[playerid][pMember]) { case 12: bandattack="Ballas"; case 13: bandattack="Vagos"; case 15: bandattack="Grove"; case 17: bandattack="Aztecas"; case 18: bandattack="Rifa"; } new fmt_str[(27 - 4) + ( 48 + 1)]; и if(IsAGunsCar(newcar)) { new fmt_str[16 + ( -2 + 11 ) + 1]; format(fmt_str, sizeof(fmt_str), "Оружия: %i/10000", MatHaul[newcar-gunscar[0]][mLoad],MatHaul[newcar-gunscar[0]][mCapasity]); SCM(playerid, TEAM_GROVE_COLOR, fmt_str); SCM(playerid, -1, !"(( Для загрузки/разгрузки Оружия Введите: /carm ))"); }
Последний раз редактировалось DmitriyVasilev; 03.03.2019 в 16:50.
Скобки расставлены довольно странно, но в остальном - да, правильно.
Обычно скобками отделяют вычисление для разных данных. В твоём случае было бы как-то так:
То бишь, отдельно размер строки без учёта входящих данных и отдельно вычисление для каждого заполнителя. В таком случае, если ты, например, решишь убрать отображение "bandattack", то тебе достаточно просто удалить первую скобку и не нужно будет ничего пересчитывать. В этом весь смысл такого составления формул :)PHP код:
new fmt_str[27+(-2+sizeof(bandprotect))+(-2+sizeof(bandattack))+1];
Ну и стоит нормально подсчитать размер для bandprotect/bandattack.
Хотя вообще в твоём случае лучше сделать так:
static const band_list[][] =// Зарезервируем переменную сразу в сегменте данных, дабы при каждом вызове кода не заниматься извлечением данных в стэк { "Ballas", // 12 ID | 0 ячейка "Vagos", // 13 ID | 1 ячейка "Grove", // 15 ID | 2 ячейка "Aztecas", // 17 ID | 3 ячейка "Rifa" // 18 ID | 4 ячейка }; //Далее сопоставим ID фракций номеру ячеек в массиве. new protect_idx; switch(GZInfo[i][gFrakVlad]) { case 12: protect_idx = 0; case 13: protect_idx = 1; case 15: protect_idx = 2; case 17: protect_idx = 3; case 18: protect_idx = 4; } new attack_idx; switch(User[playerid][pMember]) { case 12: attack_idx = 0; case 13: attack_idx = 1; case 15: attack_idx = 2; case 17: attack_idx = 3; case 18: attack_idx = 4; } new fmt_str[27+ (-2+sizeof(band_list[])) + (-2+sizeof(band_list[])) +1]; format(fmt_str,sizeof(fmt_str),"Банда %s напала на банду %s", band_list[attack_idx], band_list[protect_idx]);// Получим нназвание банд из массива согласно полученному номеру ячейки
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
warning 224: indeterminate array size in "sizeof" expression (symbol "")
это в new fmt_str[27+ (-2+sizeof(band_list[])) + (-2+sizeof(band_list[])) +1];
Ах да, вот тут тоже размер нужно подсчитать, так как массив многомерный и компилятор в данном случае не сможет точный размер второй меры определить для sizeof самостоятельно
static const band_list[5][8] =// Зарезервируем переменную сразу в сегменте данных, дабы при каждом вызове кода не заниматься извлечением данных в стэк { "Ballas", // 12 ID | 0 ячейка "Vagos", // 13 ID | 1 ячейка "Grove", // 15 ID | 2 ячейка "Aztecas", // 17 ID | 3 ячейка "Rifa" // 18 ID | 4 ячейка };
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)