Subliminal
Добрый день, хотел сделать системку передачи предметов, это уже 2й тред по мой проблеме.
Так как я не шарю особо, начал искать пожожие фунции в моде, нашел стал переделывать под то что мне надо
Но оно не работает нормально, не отнимает деньги не выдает итемов, ни че го, кроме диалогов.
У меня в моде инвентарь там все по ячейкам использование, передача(которой я занимаюсь), и выкинуть.
И так по всем ячейкам(к которым это подходит)
Вот продолжение:
Мэйби кто поможет, я хз уже сижу 2+ часа блин
Так как я не шарю особо, начал искать пожожие фунции в моде, нашел стал переделывать под то что мне надо
Но оно не работает нормально, не отнимает деньги не выдает итемов, ни че го, кроме диалогов.
У меня в моде инвентарь там все по ячейкам использование, передача(которой я занимаюсь), и выкинуть.
C++:
case 8: // вот это ячейка с передачей броника
{
if ( ! response )return 1;
SetPVarInt(playerid, "item_select", p_info[playerid][pItem][8]); // 8 ид броника
show_dialog ( playerid, inventarid, DIALOG_STYLE_INPUT, ""c_server"Найти игрока", ""c_grey"* Введён некорректный ID игрока.\n\n"c_white"Введите ID игрока, которому желаете передать предмет", "Принять", "Назад" ) ;
return 1 ;
}
Вот продолжение:
C++:
case inventarid:
{
if ( ! response ) return 1;
new targetid ;
if ( sscanf ( inputtext, "u", targetid ) ) return show_dialog ( playerid, inventarid, DIALOG_STYLE_INPUT, ""c_server"Найти игрока", ""c_grey"* Введён некорректный ID игрока.\n\n"c_white"Введите ID игрока, которому желаете передать предмет", "Принять", "Назад" ) ;
if ( ! IsPlayerConnected ( targetid ) || p_t_info [ targetid ] [ p_logged ] == false || targetid == playerid ) return show_dialog ( playerid, inventarid, DIALOG_STYLE_INPUT, ""c_server"Найти игрока", ""c_grey"* Введён некорректный ID игрока.\n\n"c_white"Введите ID игрока, которому желаете передать предмет", "Принять", "Назад" ) ;
if ( ! IsPlayerInRangeOfPoint ( playerid, 5, p_t_info [ targetid ][ p_pos ] [ 0 ], p_t_info [ targetid ][ p_pos ] [ 1 ], p_t_info [ targetid ][ p_pos ] [ 2 ] ) || GetPlayerVirtualWorld ( targetid ) != GetPlayerVirtualWorld ( playerid ) )return show_dialog ( playerid, d_h_rent_invite, DIALOG_STYLE_INPUT, ""c_server"Найти игрока", ""c_grey"* Игрок слишком далеко.\n\n"c_white"Введите ID игрока, которому желаете передать предмет", "Принять", "Назад" ) ;
SetPVarInt ( targetid, "item_id", playerid ) ;
SetPVarInt ( playerid, "item_id", targetid ) ;
show_dialog ( playerid, d_kilvo, DIALOG_STYLE_INPUT, ""c_server"Выберите игрока", ""c_white"Введите кол-во передаваемого предмета", "Принять", "Назад" ) ;
}
case d_kilvo: // количество предмета
{
if ( ! response ) return show_dialog ( playerid, inventarid, DIALOG_STYLE_INPUT, ""c_server"Найти игрока", ""c_grey"* Введён некорректный ID игрока.\n\n"c_white"Введите ID игрока, которому желаете передать предмет", "Принять", "Назад" ) ;
new kolvo = strval(inputtext);
SetPVarInt ( playerid, "kolvo_item", kolvo ) ;
if ( kolvo < 1 || kolvo > 999) return show_dialog ( playerid, d_kilvo, DIALOG_STYLE_INPUT, ""c_server"Количество / предмета", ""c_grey"* от 1 до 999\n\n"c_white"Введите количество", "Принять", "Назад" ) ;
// SetPVarInt ( playerid, "kolvo_item", kolvo ) ;
show_dialog ( playerid, d_cena_ak, DIALOG_STYLE_INPUT, ""c_server"Цена / предмета", ""c_white"Задайте цену на выбранныые предметы", "Принять", "Назад" ) ;
}
case d_cena_ak: // цена скока денет надо
{
if ( ! response )
{
show_dialog ( playerid, d_kilvo, DIALOG_STYLE_INPUT, ""c_server"Количество / предмета", ""c_grey"* от 1 до 999\n\n"c_white"Введите количество", "Принять", "Назад" ) ;
return DeletePVar ( playerid, "kolvo_item" ) ;
}
new cena_item = strval ( inputtext ) ;
SetPVarInt ( playerid, "item_money", cena_item );
if ( cena_item < 0 || cena_item > 10000000) return show_dialog ( playerid, d_cena_ak, DIALOG_STYLE_INPUT, ""c_server"Цена / предмета", ""c_grey"* Сумма должна быть от 1$ до 10.000$\n\n"c_white"Введите сумму", "Принять", "Назад" ) ;
new targetid = GetPVarInt ( playerid, "item_id" ) ;
// show_dialog ( playerid, d_kilvo, DIALOG_STYLE_INPUT, ""c_server"количество", ""c_white"Введите количество", "Принять", "Назад" ) ;
SetPVarInt ( playerid, "item_inv", 1 ) ;
new _dialog_string [ 144 ];
format ( _dialog_string,sizeof ( _dialog_string ),""c_green"* "c_white"Вы предложили "c_green"%s "c_white"купить у вас"c_green"%s за %d$", p_info [ targetid ] [ name ], ItemsName, cena_item ) ;
SendClientMessage ( playerid, col_white, _dialog_string ) ;
format ( _dialog_string, sizeof ( _dialog_string ),""c_white"%s предлагает Вам купить %s дней за %d$.\n\n"c_grey"* Вы согласны на предложение?", p_info [ playerid ] [ name ], ItemsName, cena_item ) ;
show_dialog ( targetid, d_acept_item, DIALOG_STYLE_MSGBOX, ""c_server"___",_dialog_string, "Да", "Нет" ) ;
}
case d_acept_item:
{
new opponent_target = GetPVarInt ( playerid, "item_id" ) ;
new money_buy_pl = GetPVarInt ( playerid, "item_money") ;
new get_kol_vo = GetPVarInt ( playerid, "kolvo_item" ) ;
new 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 ( p_info [ opponent_target ] [ money ] < GetPVarInt ( playerid, "item_money" ) )
{
DeletePVar ( opponent_target, "item_inv" ) ;
SendClientMessage ( opponent_target, col_gray, "* У Вас недостаточно средств для совершения сделки." ) ;
SendClientMessage ( playerid, col_gray, "* У игрока недостаточно средств для совершения сделки." ) ;
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, col_gray, "* Игрок уже покинул игру." ) ;
DeletePVar ( playerid, "item_money" ) ;
DeletePVar ( opponent_target, "item_id" ) ;
return DeletePVar ( playerid, "item_id" ) ;
}
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 ;
// SendClientMessage ( playerid, col_gray, "* сработало." ) ;
// SendClientMessage ( opponent_target, col_gray, "* сработало." ) ;
DeletePVar ( opponent_target, "item_inv" ) ;
DeletePVar ( opponent_target, "item_money" ) ;
DeletePVar ( opponent_target, "kolvo_item" ) ;
DeletePVar ( playerid, "item_id" ) ;
DeletePVar ( opponent_target, "item_id" ) ;
}
