Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: /id (DC_CMD)

  1. #1
    Аватар для Sparks
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.10.2015
    Сообщений
    3
    Репутация:
    4 ±

    /id (DC_CMD)

    delete
    Последний раз редактировалось Sparks; 09.01.2016 в 19:28. Причина: удалите

  2. 2 пользователя(ей) сказали cпасибо:
    gangzone.ini (24.11.2015) Sp1ke (02.12.2015)
  3. #2
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Нескромный вопрос к автору темы: вы вообще проверяли свой код?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  4. #3
    Аватар для Excel_Smit.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.11.2015
    Сообщений
    8
    Репутация:
    1 ±
    PHP код:
    CMD:id(playeridparams[])
    {
        if(
    sscanf(params,"u",params[0]))  return SendClientMessage(playerid0xAFAFAFFF"Используйте: /id [ид игрока/часть ника]");
        if(!
    IsPlayerConnected(params[0])) return SendClientMessage(playerid0xFFFF00FF"Совпадении не найдено ");   
        new 
    name[MAX_PLAYER_NAME], str[13+MAX_PLAYER_NAME];
        
    GetPlayerName(params[0], namesizeof(name)); 
        
    format(strsizeof(str), "%s - ID: %d"nameparams[0]);
        
    SendClientMessage(playerid0xFFFFFFFFstr);
        return 
    1;


  5. #4
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от Excel_Smit. Посмотреть сообщение
    PHP код:
    CMD:id(playeridparams[])
    {
        if(
    sscanf(params,"u",params[0]))  return SendClientMessage(playerid0xAFAFAFFF"Используйте: /id [ид игрока/часть ника]");
        if(!
    IsPlayerConnected(params[0])) return SendClientMessage(playerid0xFFFF00FF"Совпадении не найдено ");   
        new 
    name[MAX_PLAYER_NAME], str[13+MAX_PLAYER_NAME];
        
    GetPlayerName(params[0], namesizeof(name)); 
        
    format(strsizeof(str), "%s - ID: %d"nameparams[0]);
        
    SendClientMessage(playerid0xFFFFFFFFstr);
        return 
    1;

    Вы не совсем поняли суть команды.
    Последний раз редактировалось L0ndl3m; 25.11.2015 в 11:17.

  6. #5
    Аватар для Sparks
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.10.2015
    Сообщений
    3
    Репутация:
    4 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Нескромный вопрос к автору темы: вы вообще проверяли свой код?
    Да.

  7. #6
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от Sparks Посмотреть сообщение
    Код:
    ...
    new
    	found_id = -1,
    	fmt_str[37],
    	username[MAX_PLAYER_NAME];
    		
    GetPlayerName(playerid, username, MAX_PLAYER_NAME);
    Про название массива fmt_str, пожалуй, не буду ничего говорить.

  8. #7
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Нескромный вопрос к автору темы: вы вообще проверяли свой код?
    Цитата Сообщение от Sparks Посмотреть сообщение
    Да.
    1. Если на сервере будет один единственный игрок под ID 0, то GetPlayerPoolSize() вернёт 0 (подробнее здесь).
    В цикле for условие проверяется перед выполнением тела цикла. Первая же проверка условия (--i >= 0) выдаст false (переменная i окажется равна -1) и тело цикла не выполнится ни разу.

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

    3.
    PHP код:
                if(found_id 5)
                    break;
                    
                
    found_id++; 
    Что мешает выйти из цикла при инкременте переменной found_id на предыдущей итерации?
    Можно было сделать примерно так:
    PHP код:
        if(++found_id >= 5)
            break; 
    Но нет, мы лёгких путей не выбираем: если достигнут лимит, проведём поиск ещё раз - и плевать, что найденный результат не будет использоваться.

    4.
    PHP код:
            else if(found_id == -1)
                return 
    SendClientMessage(playerid0xB4B5B7FF"Совпадений не найдено");
            else if(
    found_id >= 4)
                
    SendClientMessage(playerid0xB4B5B7FF"Показаны первые 5 совпадений"); 
    Зачем эти действия вообще нужны в цикле, если они должны выполняться однократно?

    5. Сообщение "Показаны первые 5 совпадений" будет выведено 2 раза, если на сервере будут хотя бы 5 игроков.

    6. Если игрок введёт подстроку, которой нет в его никнейме, сообщение "Совпадений не найдено" будет показано столько раз, сколько игроков играют на сервере.


    Из всего этого напрашивается вопрос: каким образом вы тестировали свою команду, если упустили столько ошибок, которые даже без тестирования бросаются в глаза? Тяп-ляп и в паблик? Not cool.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  9. #8
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Daniel, вы полностью правы. Люди не очень понимают то, что они делают. Каждый программист должен понимать, все что он делает, он так же должен понимать как его программа работает, и что в ней происходит.

  10. #9
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Daniel, вы полностью правы. Люди не очень понимают то, что они делают. Каждый программист должен понимать, все что он делает, он так же должен понимать как его программа работает, и что в ней происходит.
    Если бы были такие смайлы как : Задница и Язык, вы бы их видели вместо этого сообщения.

  11. 4 пользователя(ей) сказали cпасибо:
    $continue$ (26.11.2015) Desulaid (26.11.2015) gangzone.ini (26.11.2015) Иван Бубнов (27.03.2016)
  12. #10
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Salvacore Посмотреть сообщение
    Если бы были такие смайлы как : Задница и Язык, вы бы их видели вместо этого сообщения.
    Ясно, но зачем так грубо? Нельзя быть вежливым со всеми? Простите, если что-то сделал не так. Я просто высказал свое мнение. Спасибо.

  13. Пользователь сказал cпасибо:
    L0ndl3m (26.11.2015)
 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •