Соглашение
При копировании любых материалов с данного ресурса активная ссылка на www.amx-x.ru обязательна.
Цитатник:
Subb98 писал(а):
RevCrew, cyberforum предложил бы, но что меня там бесит: создаёшь тему с вопросом - тебе отвечают ссылками на похожие темы, где даны ответы точно такими же ссылками на похожие темы с ответами с точно такими же ссылками. Как будто не на форум зашёл, а на порно-сайт с unlimited-redirect'ами.
Правила форума
1. Запрещено материться и оскорблять других участников форума. 2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня". 3. Запрещено взламывать сайт/форум или наносить любой вред проекту. 4. Запрещено рекламировать другие ресурсы. 5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
Ага, и получить вызов функции начала раунда столько раз, сколько унас обьектов на карте, гениально.
Один фрукт, страдающий недостачей времени, нашел его ради меня любимого и писал(а):
noo00oob, зачем родился на свет вообще? срать на форумах это понятно.. больше изъеба не найти как бэ? а то, что ты недоношенная скотина, сдерживайся, детка.
Мы итак знаем длину исходной строки, потому что она передается в функции в качестве аргумента len. Возможно, это была какая-то доп. проверка, если встречается конец строки 0 где-то внутри строки. Хорошо.
В параметр len передается не длина строки, а ее максимальный размер.
new pad_sumb = min(pad_length - source_len, len - source_len);
Но рассмотрим данный вариант, если len и source_len равняются, а они будут равняться, если конец строки будет в конце строки. Учитывая, что берется минимальное число и то, что len = source_len, то возьмется 0, что по сути уже нарушит вычисления потом.
Теперь, если pad_sumb будет 0, просто никаких изменений для строки не будет. Можно было протестировать перед таким выводом. + Мой код лучше всего читается + Быстрее всех выполняется + Используется 1 функцию, и то я в коментах написал код на который ее можно заменить
new pad_sumb =min(pad_length - source_len, len - source_len);
[/pawn] pad_sumb будет 0, потому что len = source_len. В результате этого мы получим: "Welcome to amx-x.ru!:D:D:"? Нет.
1. В том коде Результат полюбому не будет больше длине строки "Welcome to amx-x.ru!". Т.к. размер массива s_Test будет равен длине строки + 1 => ну никак ты не получиш "Welcome to amx-x.ru!:D:D:" 2. В pad_sumb будет 0 и строка никак не изменится, т.к. вот условия [pawn]
sindex = source_len;
for(new i =0; sindex < new_len;++sindex, ++i)
[/pawn] [pawn]
sindex =0;
sindex < pad_sumb;
[/pawn] Они ничего не сделают со строкой.
Тут есть все необходимые проверки на правильную работу функции.
[/pawn] в строке s_Test[] было "Welcome to amx-x.ru!:D:D:", а у меня ничего не меняется. Ну такто функция не может записать данные за пределами массива, тогда она запишет текст непонятно куда, и строка будет до ближайщего 0. charsmax(s_Test) == 20 и хоть какой большой не будет заданный размер до которого нужно дописать строку, нельзя выйти за пределы отведенной под строку памяти. У нас же не пхп язык где даже строгой типизации нету, чего уж там говорить про динамические строки.
new iMaxPadStringLen =max( iMinLen -strlen( source ), 0);
[/pawn] Учитывая, что len < pad_length, то получаем в iMinLen = len. Затем учитывая, что strlen(source) = len, если строка source имеет 0 в конце строки, то iMaxPadStringLen будет 0. В результате чего произойдет выход из функции потом. А также непонятно зачем нужен MAX_SOURCE_LENGTH, ведь у нас длина новой строки задается через аргумент функции pad_length.
1. [pawn]
new iMinLen =min( len, pad_length );
[/pawn]здесь выбираем что меньше: длина строки (ведь я не могу писать за пределы массива) или длина, до которой нужно заполнить строку. 2. [pawn]
new iMaxPadStringLen =max( iMinLen -strlen( source ), 0);
[/pawn]здесь считаем сколько места осталось под pad_string'и. Если место осталось, то вернет кол-во свободных ячеек, если же не осталось, то вернет 0 и следом проверка на эту переменную. 3. MAX_SOURCE_LENGTH нужно для того, чтобы создать массив и скопировать туда исходную строку, с этим согласен - сделано не в лучшем виде.