PDA

Просмотр полной версии : [CMD] /id (DC_CMD)



Sparks
24.11.2015, 14:40
delete

Daniel_Cortez
25.11.2015, 04:48
Нескромный вопрос к автору темы: вы вообще проверяли свой код?

Excel_Smit.
25.11.2015, 10:07
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;
}

L0ndl3m
25.11.2015, 10:18
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;
}
Вы не совсем поняли суть команды.

Sparks
25.11.2015, 11:47
Нескромный вопрос к автору темы: вы вообще проверяли свой код?

Да.

L0ndl3m
25.11.2015, 15:44
...
new
found_id = -1,
fmt_str[37],
username[MAX_PLAYER_NAME];

GetPlayerName(playerid, username, MAX_PLAYER_NAME);



Про название массива fmt_str, пожалуй, не буду ничего говорить.

Daniel_Cortez
25.11.2015, 19:38
Нескромный вопрос к автору темы: вы вообще проверяли свой код?

Да.
1. Если на сервере будет один единственный игрок под ID 0, то GetPlayerPoolSize() вернёт 0 (подробнее здесь (http://pro-pawn.ru/showthread.php?12762-GetPlayerPoolSize)).
В цикле for условие проверяется перед выполнением тела цикла. Первая же проверка условия (--i >= 0) выдаст false (переменная i окажется равна -1) и тело цикла не выполнится ни разу.

2. Как уже подметили выше, вместо получения никнейма каждого i-того игрока берётся ник игрока, который ввёл команду.
Поэтому если на сервере будет 5 или более человек и игрок введёт часть своего ника, команда профлудит сообщениями с его ником 5 раз.

3.


if(found_id > 5)
break;

found_id++;

Что мешает выйти из цикла при инкременте переменной found_id на предыдущей итерации?
Можно было сделать примерно так:


if(++found_id >= 5)
break;

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

4.


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.

VVWVV
25.11.2015, 19:51
Daniel, вы полностью правы. Люди не очень понимают то, что они делают. Каждый программист должен понимать, все что он делает, он так же должен понимать как его программа работает, и что в ней происходит.

Salvacore
26.11.2015, 00:42
Daniel, вы полностью правы. Люди не очень понимают то, что они делают. Каждый программист должен понимать, все что он делает, он так же должен понимать как его программа работает, и что в ней происходит.
Если бы были такие смайлы как : Задница и Язык, вы бы их видели вместо этого сообщения.

VVWVV
26.11.2015, 01:03
Если бы были такие смайлы как : Задница и Язык, вы бы их видели вместо этого сообщения.

Ясно, но зачем так грубо? Нельзя быть вежливым со всеми? Простите, если что-то сделал не так. Я просто высказал свое мнение. Спасибо.

gangzone.ini
26.11.2015, 08:35
Ясно, но зачем так грубо? Нельзя быть вежливым со всеми? Простите, если что-то сделал не так. Я просто высказал свое мнение. Спасибо.

Тут нету оскорбления )

VVWVV
26.11.2015, 08:52
Тут нету оскорбления )

Но как же так? Хорошо... У вас на форуме нельзя выражать свое мнение, а так же быть вежливым? Мое мнение о вас меняется...
Мое мнение было очень похоже с сообщением Daniel'a.

«... Задница и Язык, вы бы их видели вместо этого сообщения.» — большой намек.

Sparks
26.11.2015, 10:24
Обновил.

[ForD]
26.11.2015, 12:37
Тут нету оскорбления )

не оскорбление а грубость скорее)


Но как же так? Хорошо... У вас на форуме нельзя выражать свое мнение, а так же быть вежливым? Мое мнение о вас меняется...
Мое мнение было очень похоже с сообщением Daniel'a.

«... Задница и Язык, вы бы их видели вместо этого сообщения.» — большой намек.

как раз таки на этом форуме в большей части можно высказывать свои мнения,проверено)
а на счет вежливости,то,как-бы сказать,если и встретишь то оочень редко человека с такой вежливостью что-ли,да и по сути на любом форуме много маленьких быдло кодеров которые только чужих мамок в кино умеют водить,на счет Сальвакора я честно говоря не знаю,видимо со стороны ваш комментарий был поход на "лизоблюдство",но,на это у каждого свой взгляд,проще не обращай внимание.
p.s. а по сути твоя манера общения мне даже нравится)

Daniel_Cortez
26.11.2015, 21:07
Но как же так? Хорошо... У вас на форуме нельзя выражать свое мнение, а так же быть вежливым? Мое мнение о вас меняется...
Мое мнение было очень похоже с сообщением Daniel'a.
Это здорово, что вы согласны с чьей-то точкой зрения, но в чём смысл оставлять пост, если вы просто пересказываете чужую идею?
Не следует путать конструктивное обсуждение с набиванием постов. В конце концов, если вы согласны с чьим-то мнением, но вам нечего добавить, и вы просто хотите как-то выразить своё согласие - под каждым постом есть кнопка "Спасибо".



Обновил.
Когда я оставил свой предыдущий пост, я не заметил, что в found_id начинается с -1, а не с 0.
Могу поинтересоваться, почему вы сделали именно так? Вы как-нибудь представляете себе -1 игроков? Или -1 метр?
К тому же, в функцию format приходится передавать не found_id, а found_id + 1.
Кроме того, вы ищете до 5 игроков, но в условии прерывания поиска приходится указывать 4, что только ещё больше запутывает ваш код.

И да, ещё. Что послужило причиной того, что вы сделали foreach.inc обязательным?

Sparks
27.11.2015, 03:44
И да, ещё. Что послужило причиной того, что вы сделали foreach.inc обязательным?

Потому что я считаю его актуальным.