Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 5 из 5
  1. #1
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±

    /weapon - смотрим оружие игрока

    Команда просматривает все оружие у игрока: выводит наименование оружия и его количество. Я не смог подобрать обобщенное слово как и для патронов, так и для ... В общем обозвал все это "количеством".


    Автор: Untonyst

     Открыть/закрыть
    PHP код:
    #include <dc_cmd>
    #include <sscanf2>

    #if !defined MAX_WEAPON_NAME
        #define MAX_WEAPON_NAME (19)
    #endif

    #if !defined WEAPON_FIST
        #define WEAPON_FIST (0)
    #endif

    #if !defined MAX_WEAPON_SLOTS
        #define MAX_WEAPON_SLOTS (12)
    #endif

    COMMAND:weapon(playeridparams[])
    {
        if(
    == IsPlayerAdmin(playerid)) // меняем на свой аналог
            
    return SendClientMessage(playerid, -1"Вы не администратор!");

        new
            
    targetid,
            
    weapon_idweapon_name[MAX_WEAPON_NAME], ammo;

        if (
    sscanf(params"u"targetid))
            return 
    SendClientMessage(playerid, -1"Введите /weapon [игрок]");

        if (
    == IsPlayerConnected(targetid)) // меняем на свой аналог
            
    return SendClientMessage(playerid, -1"Такого игрока нет на сервере!");

        static const
            
    fmt_str_dlg_title[] = "Оружие %s",
            
    fmt_str_dlg_head_body[] = "Оружие\tКоличество\n",
            
    fmt_str_dlg_body[] = "%s\t%i\n%s";

        new
            
    str_dlg_title[sizeof(fmt_str_dlg_title)-2+MAX_PLAYER_NAME+1],
            
    str_dlg_body[
                (
    sizeof(fmt_str_dlg_head_body)-1)-2*3+2+
                (((
    sizeof(fmt_str_dlg_body)-1)-2*5+MAX_WEAPON_NAME+6+2)*12)+1
            
    ];

        
    GetPlayerName(targetidstr_dlg_titleMAX_PLAYER_NAME+1);
        
    format(str_dlg_titlesizeof(str_dlg_title), fmt_str_dlg_titlestr_dlg_title);

        for (new 
    i<= MAX_WEAPON_SLOTSi++)
        {
            
    GetPlayerWeaponData(targetidiweapon_idammo);
            if (
    weapon_id == WEAPON_FIST) continue;
            else
            {
                
    GetWeaponName(weapon_idweapon_nameMAX_WEAPON_NAME);
                
    format(str_dlg_bodysizeof(str_dlg_body), fmt_str_dlg_bodyweapon_nameammostr_dlg_body);
            }
        }

        
    strins(str_dlg_bodyfmt_str_dlg_head_body0);

        
    ShowPlayerDialog(playerid0DIALOG_STYLE_TABLIST_HEADERSstr_dlg_titlestr_dlg_body"Закрыть""");
        return 
    1;



    Копирование данной темы без разрешения автора запрещено!
    Последний раз редактировалось Desulaid; 28.01.2016 в 18:46.

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Хорошая реализация, пожалуй одобрю, но есть некоторые недочёты ( Если захочешь узнать о чём речь, то напиши ВК ).

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

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Антон, я делаю сис-му на подобии этой , решил позаимствовать часть кода у вас и у меня возник вопрос:

    fmt_str_dlg_body[] = "%s\t%i\n%s";

    Зачем нужен этот перенос и %s? Ведь у вас только 2 столбца!?

  4. #4
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от nikvlad Посмотреть сообщение
    Антон, я делаю сис-му на подобии этой , решил позаимствовать часть кода у вас и у меня возник вопрос:

    fmt_str_dlg_body[] = "%s\t%i\n%s";

    Зачем нужен этот перенос и %s? Ведь у вас только 2 столбца!?
    Это все то, что будет содержится в этих столбцах. Названия оружия и патроны. А третье - это же содержимое.

    UPD:
    Код:
    format(str_dlg_body, sizeof(str_dlg_body), fmt_str_dlg_body, weapon_name, ammo, str_dlg_body);
    Последний раз редактировалось Desulaid; 01.06.2016 в 16:26.

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

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    Это все то, что будет содержится в этих столбцах. Названия оружия и патроны. А третье - это же содержимое.

    UPD:
    Код:
    format(str_dlg_body, sizeof(str_dlg_body), fmt_str_dlg_body, weapon_name, ammo, str_dlg_body);
    Все, спасибо, доперло:D

 

 

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

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

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

Ваши права

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