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

Тема: Команда ID

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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±

    Команда ID

    Здравствуйте, подскажите, как сделать команду ID чтобы при вводе первых например букв ника, выдавало все возможное варианты Ну например играет на сервере игрок с ником который начинается на A, вводишь /id A и выдает все ники которые на A начинаются, ну и по ID так же)
    Буду очень признателен.

  2. #2
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Если конкретно для ников, то юзай strfind для поиска введённой части по никам игроков
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Если конкретно для ников, то юзай strfind для поиска введённой части по никам игроков
    Ну нужно чтобы и ник можно было бы ввести и ID

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от Skyline Посмотреть сообщение
    Ну нужно чтобы и ник можно было бы ввести и ID
    Тогда sscanf пробуй
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  6. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Список ников выводить так (не тестировал):

    PHP код:
    CMD:test(playeridparams[])
    {
        new 
    buff_player_name[MAX_PLAYER_NAME],
            
    len strlen(params);
        
        if(!(
    <= len MAX_PLAYER_NAME))
            return 
    SendClientMessage(playerid, -1"Слишком коротко/длинно");

        for(new 
    iMAX_PLAYERSi++)
        {
            if(!
    IsPlayerConnected(i)) 
                continue;
            
    GetPlayerName(ibuff_player_nameMAX_PLAYER_NAME);
            if(
    strcmp(buff_player_nameparamslen))
                continue;
            
    SendClientMessage(playerid, -1buff_player_name);
        }
        return 
    1;

    Чтоб добавить возможность указывать ID, добавляй в самое начало проверку на то, хранится ли в params число и если хранится, обрабатывай как ID. Иначе - ник.

    Ну или просто погугли получше и найди готовую команду. Я такое ещё в далёком 2012-ом видел в каком-то из ДМ модов
    Последний раз редактировалось DeimoS; 10.04.2017 в 01:17.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  7. Пользователь сказал cпасибо:
    Skyline (10.04.2017)
  8. #7
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    А вообще совсем забыл, у меня по описанному принципу реализован в одном проекте подобный поиск, правда только для объектов/транспорта и прочего, без sscanf'а. Вот пример (если введено неполное имя или много совпадений - выводит их список, если совпадение одно - делает действие).

    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
        if(!(<= len MAX_PLAYERS))
            return 
    SendClientMessage(playerid, -1"Слишком коротко/длинно"); 
    Наверное "MAX_PLAYER_NAME" имел в виду)
    Последний раз редактировалось Nexius_Tailer; 10.04.2017 в 00:39.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  9. 2 пользователя(ей) сказали cпасибо:
    DeimoS (10.04.2017) Skyline (10.04.2017)
  10. #8
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Моя команда на основе sscanf с подсветкой найденной части ника.
    PHP код:
    CMD:id(playeridparams[])
    {
        
    #if !defined COMMAND_ID_MAX_MATCHES
            #define COMMAND_ID_MAX_MATCHES 10
        #endif

        
    new
            
    ids[COMMAND_ID_MAX_MATCHES];

        if (
    sscanf(params"?<MATCH_NAME_PARTIAL=1>u[" #COMMAND_ID_MAX_MATCHES "]", ids)) {
            
    SendClientMessage(playerid, -1"{FFCC66}[Применение]: {FFFFFF}/id <часть ника>");
            return 
    1;
        }
        
    #undef COMMAND_ID_MAX_MATCHES

        
    new
            
    i,
            
    insert_pos,
            
    string[MAX_PLAYER_NAME 18 3];

        while (
    ids[i] != INVALID_PLAYER_ID) {
            if (
    ids[i] == cellmin) {
                
    SendClientMessage(playerid, -1"{FFCC66}* {FFFFFF}и другие...");
                break;
            }

            
    GetPlayerName(ids[i], stringsizeof(string));

            
    insert_pos strfind(stringparamstrue);
            if (
    insert_pos != -1) {
                
    strins(string"{FFFFFF}"strlen(params) + insert_pos);
                
    strins(string"{FF8888}"insert_pos);
            }

            
    format(stringsizeof(string), "{FFCC66}* {FFFFFF}%s - %d"stringids[i]);
            
    SendClientMessage(playerid, -1string);

            ++
    i;
        }

        if (
    == 0) {
            
    SendClientMessage(playerid, -1"{FFCC66}* {FFFFFF}Никто не найден");
        }
        return 
    1;

    Последний раз редактировалось ziggi; 10.04.2017 в 01:02.

  11. Пользователь сказал cпасибо:
    Skyline (10.04.2017)
  12. #9
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    А вообще совсем забыл, у меня по описанному принципу реализован в одном проекте подобный поиск, правда только для объектов/транспорта и прочего, без sscanf'а. Вот пример (если введено неполное имя или много совпадений - выводит их список, если совпадение одно - делает действие).
    Извини не могу прогрузить страницу, если можно покажи часть кода для примера пожалуйста

    - - - Добавлено - - -

    Цитата Сообщение от ziggi Посмотреть сообщение
    Моя команда на основе sscanf с подсветкой найденной части ника.
    PHP код:
    CMD:id(playeridparams[])
    {
        
    #if !defined COMMAND_ID_MAX_MATCHES
            #define COMMAND_ID_MAX_MATCHES 10
        #endif

        
    new
            
    ids[COMMAND_ID_MAX_MATCHES];

        if (
    sscanf(params"?<MATCH_NAME_PARTIAL=1>u[" #COMMAND_ID_MAX_MATCHES "]", ids)) {
            
    SendClientMessage(playerid, -1"{FFCC66}[Применение]: {FFFFFF}/id <часть ника>");
            return 
    1;
        }
        
    #undef COMMAND_ID_MAX_MATCHES

        
    new
            
    i,
            
    insert_pos,
            
    string[MAX_PLAYER_NAME 16 1];

        while (
    ids[i] != INVALID_PLAYER_ID) {
            if (
    ids[i] == cellmin) {
                
    SendClientMessage(playerid, -1"{FFCC66}* {FFFFFF}и другие...");
                break;
            }

            
    GetPlayerName(ids[i], stringsizeof(string));

            
    insert_pos strfind(stringparamstrue);
            if (
    insert_pos != -1) {
                
    strins(string"{FFFFFF}"strlen(params) + insert_pos);
                
    strins(string"{FF8888}"insert_pos);
            }

            
    format(stringsizeof(string), "{FFCC66}* {FFFFFF}%s - %d"stringids[i]);
            
    SendClientMessage(playerid, -1string);

            ++
    i;
        }

        if (
    == 0) {
            
    SendClientMessage(playerid, -1"{FFCC66}* {FFFFFF}Никто не найден");
        }
        return 
    1;

    ziggi, почему то все появляются если даже ввожу часть ника к которой игрок не относится)
    Задумка у тебя клевая

  13. #10
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Skyline Посмотреть сообщение
    Извини не могу прогрузить страницу, если можно покажи часть кода для примера пожалуйста

    - - - Добавлено - - -



    ziggi, почему то все появляются если даже ввожу часть ника к которой игрок не относится)
    Задумка у тебя клевая
    Странно, покажи что вводишь и что получаешь.

 

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

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

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

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

Ваши права

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