Просмотр полной версии : [CMD] /id (DC_CMD)
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;
}
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;
}
Вы не совсем поняли суть команды.
Нескромный вопрос к автору темы: вы вообще проверяли свой код?
Да.
...
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.
Daniel, вы полностью правы. Люди не очень понимают то, что они делают. Каждый программист должен понимать, все что он делает, он так же должен понимать как его программа работает, и что в ней происходит.
Salvacore
26.11.2015, 00:42
Daniel, вы полностью правы. Люди не очень понимают то, что они делают. Каждый программист должен понимать, все что он делает, он так же должен понимать как его программа работает, и что в ней происходит.
Если бы были такие смайлы как : Задница и Язык, вы бы их видели вместо этого сообщения.
Если бы были такие смайлы как : Задница и Язык, вы бы их видели вместо этого сообщения.
Ясно, но зачем так грубо? Нельзя быть вежливым со всеми? Простите, если что-то сделал не так. Я просто высказал свое мнение. Спасибо.
gangzone.ini
26.11.2015, 08:35
Ясно, но зачем так грубо? Нельзя быть вежливым со всеми? Простите, если что-то сделал не так. Я просто высказал свое мнение. Спасибо.
Тут нету оскорбления )
Тут нету оскорбления )
Но как же так? Хорошо... У вас на форуме нельзя выражать свое мнение, а так же быть вежливым? Мое мнение о вас меняется...
Мое мнение было очень похоже с сообщением Daniel'a.
«... Задница и Язык, вы бы их видели вместо этого сообщения.» — большой намек.
Тут нету оскорбления )
не оскорбление а грубость скорее)
Но как же так? Хорошо... У вас на форуме нельзя выражать свое мнение, а так же быть вежливым? Мое мнение о вас меняется...
Мое мнение было очень похоже с сообщением 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 обязательным?
И да, ещё. Что послужило причиной того, что вы сделали foreach.inc обязательным?
Потому что я считаю его актуальным.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot