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;
}
