delete
delete
Последний раз редактировалось Sparks; 09.01.2016 в 19:28. Причина: удалите
gangzone.ini (24.11.2015) Sp1ke (02.12.2015)
Нескромный вопрос к автору темы: вы вообще проверяли свой код?
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
PHP код:
CMD:id(playerid, params[])
{
if(sscanf(params,"u",params[0])) return SendClientMessage(playerid, 0xAFAFAFFF, "Используйте: /id [ид игрока/часть ника]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, 0xFFFF00FF, "Совпадении не найдено ");
new name[MAX_PLAYER_NAME], str[13+MAX_PLAYER_NAME];
GetPlayerName(params[0], name, sizeof(name));
format(str, sizeof(str), "%s - ID: %d", name, params[0]);
SendClientMessage(playerid, 0xFFFFFFFF, str);
return 1;
}
1. Если на сервере будет один единственный игрок под ID 0, то GetPlayerPoolSize() вернёт 0 (подробнее здесь).
В цикле for условие проверяется перед выполнением тела цикла. Первая же проверка условия (--i >= 0) выдаст false (переменная i окажется равна -1) и тело цикла не выполнится ни разу.
2. Как уже подметили выше, вместо получения никнейма каждого i-того игрока берётся ник игрока, который ввёл команду.
Поэтому если на сервере будет 5 или более человек и игрок введёт часть своего ника, команда профлудит сообщениями с его ником 5 раз.
3.
Что мешает выйти из цикла при инкременте переменной found_id на предыдущей итерации?PHP код:
if(found_id > 5)
break;
found_id++;
Можно было сделать примерно так:
Но нет, мы лёгких путей не выбираем: если достигнут лимит, проведём поиск ещё раз - и плевать, что найденный результат не будет использоваться.PHP код:
if(++found_id >= 5)
break;
4.
Зачем эти действия вообще нужны в цикле, если они должны выполняться однократно?PHP код:
else if(found_id == -1)
return SendClientMessage(playerid, 0xB4B5B7FF, "Совпадений не найдено");
else if(found_id >= 4)
SendClientMessage(playerid, 0xB4B5B7FF, "Показаны первые 5 совпадений");
5. Сообщение "Показаны первые 5 совпадений" будет выведено 2 раза, если на сервере будут хотя бы 5 игроков.
6. Если игрок введёт подстроку, которой нет в его никнейме, сообщение "Совпадений не найдено" будет показано столько раз, сколько игроков играют на сервере.
Из всего этого напрашивается вопрос: каким образом вы тестировали свою команду, если упустили столько ошибок, которые даже без тестирования бросаются в глаза? Тяп-ляп и в паблик? Not cool.
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Daniel, вы полностью правы. Люди не очень понимают то, что они делают. Каждый программист должен понимать, все что он делает, он так же должен понимать как его программа работает, и что в ней происходит.
$continue$ (26.11.2015) Desulaid (26.11.2015) gangzone.ini (26.11.2015) Иван Бубнов (27.03.2016)
L0ndl3m (26.11.2015)
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)