• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

/trade - Не передаёт предметы

Lester.

Умник
Всем привет, нашел в инети команду /trade для передачи предметов ,но команда под инвентарь, а у меня нет инвентаря и я пытался сделать чет тип рюкзака, но проблема в том, что ничего не передаются и по мимо этот у меня еще деньги списываются .. хотя должны у того игрока которому я предложил купить.. Так же я хз.. как сделать название предметов тип, что тебе пытаются продать..

Ребят помогите пожалуйста

C++:
cmd:trade(playerid)
{
    static const fmt_string[] = "\
    "WH_C"> Маска шт(%d)\n\
    "WH_C"> Аптечка (%d)\n\
    "WH_C"> Наркотики(%d)\n\
    "WH_C"> Материалы(%d)";
    new string[sizeof(fmt_string) + (-2 + 6) + (-2 + 6) + (-2 + 6) + (-2 + 6)];

    format(string,sizeof(string),fmt_string,PlayerInfo[playerid][Texts][2],PlayerInfo[playerid][pHel],PlayerInfo[playerid][pBrugs],PlayerInfo[playerid][pMaterials]);
    ShowPlayerDialog(playerid,2041,DIALOG_STYLE_LIST,!"Рюкзак",string,!"Далее",!"Отмена");
    return true;
}

case 2037:
        {
            if(!response) return 1;
            new targetid;

            if(sscanf(inputtext, "u", targetid)) return ShowPlayerDialog(playerid, 2037, DIALOG_STYLE_INPUT, !"Найти игрока", !"* Введён некорректный ID игрока.\n\nВведите ID игрока, которому желаете передать предмет", !"Принять", !"Назад" );
            if(!IsPlayerConnected(targetid) || gPlayerLogged{playerid} == 0 || targetid == playerid) return ShowPlayerDialog(playerid, 2037, DIALOG_STYLE_INPUT, !"Найти игрока", !"* Введён некорректный ID игрока.\n\nВведите ID игрока, которому желаете передать предмет", "Принять", "Назад" );
            if(GetDistanceBetweenPlayers(playerid, targetid) > 3) return ShowPlayerDialog(playerid, 2037, DIALOG_STYLE_INPUT, !"Найти игрока", !"* Игрок слишком далеко.\n\nВведите ID игрока, которому желаете передать предмет", !"Принять", !"Назад");
            SetPVarInt(targetid, "item_id", playerid);
            SetPVarInt(playerid, "item_id", targetid);

            return ShowPlayerDialog(playerid, 2038, DIALOG_STYLE_INPUT, !"Выберите игрока", !"Введите кол-во передаваемого предмета", !"Принять", !"Назад" );
        }

        case 2038: // количество предмета
        {
            if(!response) return ShowPlayerDialog(playerid, 2037, DIALOG_STYLE_INPUT, !"Найти игрока", !"* Введён некорректный ID игрока.\n\nВведите ID игрока, которому желаете передать предмет", !"Принять", !"Назад");
            new value = strval(inputtext);
          
            if(value < 1 || value > 999) return ShowPlayerDialog(playerid, 2038, DIALOG_STYLE_INPUT, !"Количество / предмета", !"* от 1 до 999\n\nВведите количество", !"Принять", !"Назад");

            SetPVarInt(playerid, "kolvo_item", value);
            SetPVarInt(GetPVarInt(playerid, "item_id"),"kolvo_item", value);

            return ShowPlayerDialog(playerid, 2039, DIALOG_STYLE_INPUT, "Цена / предмета", "Задайте цену на выбранныые предметы", !"Принять", !"Назад");
        }

        case 2039: // цена скока денет надо
        {
            if(!response)
            {
                ShowPlayerDialog(playerid, 2038, DIALOG_STYLE_INPUT, !"Количество / предмета", !"* от 1 до 999\n\nВведите количество", !"Принять", !"Назад");
                return DeletePVar(playerid, "kolvo_item");
            }
            new ItemsName;
            new cena_item = strval(inputtext);
            if(cena_item < 0 || cena_item > 10000000) return ShowPlayerDialog(playerid, 2039, DIALOG_STYLE_INPUT, !"Цена / предмета", !"* Сумма должна быть от 1$ до 10.000$\n\nВведите сумму", !"Принять", !"Назад");
            new targetid = GetPVarInt (playerid, "item_id");

            // ShowPlayerDialog ( playerid, 2038, DIALOG_STYLE_INPUT, ""c_server"количество", ""c_white"Введите количество", "Принять", "Назад" );
            SetPVarInt(playerid, "item_money", cena_item);
            SetPVarInt(targetid, "item_money", cena_item);
            //
            SetPVarInt(targetid, "item_select", GetPVarInt(playerid, "item_select"));//Передаем игроку в Target - ID ивента
            //
            SetPVarInt(playerid, "item_inv", 1);
            //
            new _dialog_string [144];
            format( _dialog_string, sizeof(_dialog_string ),"*Вы предложили %s купить у вас %s за %d$",PlayerInfo[targetid][pNames],ItemsName,cena_item);
            SendClientMessage(playerid, -1, _dialog_string);
            format(_dialog_string, sizeof(_dialog_string ),"%s предлагает Вам купить %s дней за %d$.\n\n* Вы согласны на предложение?",PlayerInfo[playerid][pNames],ItemsName,cena_item);
             return ShowPlayerDialog(targetid, 2040, DIALOG_STYLE_MSGBOX, !"___",_dialog_string, !"Да", !"Нет");
        }
        case 2040:
        {
            new opponent_target = GetPVarInt(playerid, "item_id"),
            money_buy_pl = GetPVarInt (playerid, "item_money"),
            get_kol_vo = GetPVarInt (playerid, "kolvo_item" ),
            item_give = GetPVarInt (playerid, "item_select");
            if(!response)
            {
                DeletePVar(opponent_target, "item_inv");
                 DeletePVar(playerid, "item_money");
                 DeletePVar(opponent_target, "kolvo_item");
                 DeletePVar(opponent_target, "item_id");
                 return DeletePVar(playerid, "item_id");
            }
            if(PlayerInfo[opponent_target][pCash] < GetPVarInt(playerid, "item_money"))
            {
                DeletePVar(opponent_target, "item_inv");
                SendClientMessage(playerid, -1, "* У Вас недостаточно средств для совершения сделки.");
                SendClientMessage(opponent_target, -1, "* У игрока недостаточно средств для совершения сделки.");
                DeletePVar(opponent_target, "kolvo_item");
                DeletePVar(playerid, "item_money");
                DeletePVar(opponent_target, "item_id");
                return DeletePVar(playerid, "item_id");
            }
            if(GetPVarInt(opponent_target, "item_inv") == 0)
            {
                DeletePVar(opponent_target, "item_inv");
                DeletePVar(opponent_target, "kolvo_item");
                SendClientMessage(playerid, -1, "* Игрок уже покинул игру.");
                DeletePVar(playerid, "item_money");
                DeletePVar(opponent_target, "item_id");
                return DeletePVar(playerid, "item_id");
            }
            PlayerInfo[opponent_target][pCash] = money_buy_pl;
            PlayerInfo[playerid][pCash] -= money_buy_pl;
            //give_money(opponent_target, money_buy_pl);
            //give_money(playerid, -money_buy_pl);

            //p_info[playerid][pItem] += item_give*get_kol_vo; //тут возможно += а не просто =
            //p_info[opponent_target][pItem] -= item_give*get_kol_vo ;//тут возможно -= а не просто =

            new str[144];

            format(str, sizeof str, "Вы получили ITEM: %d, КОЛ-ВО: %d ЦЕНА: %d", item_give, get_kol_vo, money_buy_pl);
            SendClientMessage(playerid, -1, str);

            format(str, sizeof str, "Вы передали ITEM: %d, КОЛ-ВО: %d ЦЕНА: %d", item_give, get_kol_vo, money_buy_pl);
            SendClientMessage(opponent_target, -1, str);

            DeletePVar(opponent_target, "item_inv");
            DeletePVar(opponent_target, "item_money");
            DeletePVar(opponent_target, "kolvo_item");
            DeletePVar(playerid, "item_id");
            DeletePVar(opponent_target, "item_id");
            return 1;
        }
        case 2041:
        { 
            if(!response) return true;

            switch(listitem)
            {
                case 0: 
                {
                    if(!response) return 1;
                    if(!PlayerInfo[playerid][Texts][2]) return SendClientMessage(playerid,COLOR_FLOD,!"[Ошибка]:"WH_C" У вас нет маски!");

                    SetPVarInt(playerid, "item_select", PlayerInfo[playerid][Texts][2]); // 8 ид броника - тут нужно передать 8 может listitem? Если диалог
                    ShowPlayerDialog(playerid, 2037, DIALOG_STYLE_INPUT, !"Найти игрока", !"* Введён некорректный ID игрока.\n\nВведите ID игрока, которому желаете передать предмет", !"Принять", !"Назад");
                    return 1;
                }
                case 1: 
                {
                    if(!response) return 1;
                    if(!PlayerInfo[playerid][pHel]) return SendClientMessage(playerid,COLOR_FLOD,!"[Ошибка]:"WH_C" У вас нет маски!");

                    SetPVarInt(playerid, "item_select", PlayerInfo[playerid][pHel]); // 8 ид броника - тут нужно передать 8 может listitem? Если диалог
                    ShowPlayerDialog(playerid, 2037, DIALOG_STYLE_INPUT, !"Найти игрока", !"* Введён некорректный ID игрока.\n\nВведите ID игрока, которому желаете передать предмет", !"Принять", !"Назад");
                    return 1;
                }
                case 2: 
                {
                    if(!response) return 1;
                    if(!PlayerInfo[playerid][pBrugs]) return SendClientMessage(playerid,COLOR_FLOD,!"[Ошибка]:"WH_C" У вас нет маски!");

                    SetPVarInt(playerid, "item_select", PlayerInfo[playerid][pBrugs]); // 8 ид броника - тут нужно передать 8 может listitem? Если диалог
                    ShowPlayerDialog(playerid, 2037, DIALOG_STYLE_INPUT, !"Найти игрока", !"* Введён некорректный ID игрока.\n\nВведите ID игрока, которому желаете передать предмет", !"Принять", !"Назад");
                    return 1;
                }
                case 3: 
                {
                    if(!response) return 1;
                    if(!PlayerInfo[playerid][pMaterials]) return SendClientMessage(playerid,COLOR_FLOD,!"[Ошибка]:"WH_C" У вас нет маски!");

                    SetPVarInt(playerid, "item_select", PlayerInfo[playerid][pMaterials]); // 8 ид броника - тут нужно передать 8 может listitem? Если диалог
                    ShowPlayerDialog(playerid, 2037, DIALOG_STYLE_INPUT, !"Найти игрока", !"* Введён некорректный ID игрока.\n\nВведите ID игрока, которому желаете передать предмет", !"Принять", !"Назад");
                    return 1;
                }
            }
            return 1;
        }
 
Сверху Снизу