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

Как сделать систему обмена между игроками на текстдравах?

Статус
В этой теме нельзя размещать новые ответы.

alex600

Умник
Здравствуйте, пытаюсь сделать систему обмена между игроками на текстдравах, но пока не могу понять, некорректно данные показываются обоим игрокам, две функции потому, что разные позиции слотов для каждого игрока, хотя можно было бы и в одну уложиться, но пока главное, чтоб отображение работало нормально.
Pawn:
TradeTestOne(params[0],playerid);
TradeTestOne(playerid,params[0]);
TradeTestTwo(playerid,params[0]);
TradeTestTwo(params[0],playerid);

stock TradeTestOne(playerid,targetid) {
    if(IsPlayerOpenTRADE(targetid)) {
        TRADEDestroySlots(targetid);

        if(IsPlayrClickSlotTRADE(targetid)) {
            TRADEDestroysClickedSlotT(targetid);
        }
    }
    new amount[5];
    for(new slot, x, y; slot < TRADE_SIZE; slot++) {
        gTRADEPTDSlots[targetid][slot] =
        CreatePlayerTextDraw            (targetid, 175.0808 + (x * TRADE_SPACE_SLOTS), 142.1367 + (y * TRADE_SPACE_SLOTS*1.3), !"_");
        PlayerTextDrawTextSize          (targetid, gTRADEPTDSlots[targetid][slot], 27.0000, 36.0000);
        PlayerTextDrawBackgroundColor   (targetid, gTRADEPTDSlots[targetid][slot], 471604666);
        PlayerTextDrawFont              (targetid, gTRADEPTDSlots[targetid][slot], 5);
        PlayerTextDrawSetSelectable     (targetid, gTRADEPTDSlots[targetid][slot], true);

        new
            item_idx = GetPlayerTRADEItemByIDX(targetid, slot),
            item_id = GetTRADEItemID(item_idx),

            item_amount_idx = GetPlayerTRADEAmountByIDX(targetid, slot)
        ;

        PlayerTextDrawSetPreviewRot     (targetid, gTRADEPTDSlots[targetid][slot],
            gTRADEItem[item_id][iItemPosX], gTRADEItem[item_id][iItemPosY], gTRADEItem[item_id][iItemPosZ], gTRADEItem[item_id][iItemPosC]
        );
        PlayerTextDrawSetPreviewRot     (playerid, gTRADEPTDSlots[targetid][slot],
            gTRADEItem[item_id][iItemPosX], gTRADEItem[item_id][iItemPosY], gTRADEItem[item_id][iItemPosZ], gTRADEItem[item_id][iItemPosC]
        );

        PlayerTextDrawSetPreviewModel   (targetid, gTRADEPTDSlots[targetid][slot],
            (item_idx == INVALID_TRADE_ITEM_ID) ? (18670) : (item_idx)
        );
        PlayerTextDrawSetPreviewModel   (playerid, gTRADEPTDSlots[targetid][slot],
            (item_idx == INVALID_TRADE_ITEM_ID) ? (18670) : (item_idx)
        );

        PlayerTextDrawShow(targetid, gTRADEPTDSlots[targetid][slot]);
        PlayerTextDrawShow(playerid, gTRADEPTDSlots[targetid][slot]);

        format(amount, sizeof(amount),
            "%d",
            item_amount_idx
        );

        gTRADEPTDTextSlots[targetid][TRADE_PTD_AMOUNT][slot] =
        CreatePlayerTextDraw            (targetid, 200.726 + (x * TRADE_SPACE_SLOTS), 172.179  + (y * TRADE_SPACE_SLOTS*1.3), amount);
        PlayerTextDrawAlignment         (targetid, gTRADEPTDTextSlots[playerid][TRADE_PTD_AMOUNT][slot], 3);
        PlayerTextDrawLetterSize        (targetid, gTRADEPTDTextSlots[playerid][TRADE_PTD_AMOUNT][slot], 0.0961, 0.5712);
        PlayerTextDrawSetShadow         (targetid, gTRADEPTDTextSlots[playerid][TRADE_PTD_AMOUNT][slot], 0);

        if(item_amount_idx > 1) {
            PlayerTextDrawShow(targetid, gTRADEPTDTextSlots[targetid][TRADE_PTD_AMOUNT][slot]);
            PlayerTextDrawShow(playerid, gTRADEPTDTextSlots[targetid][TRADE_PTD_AMOUNT][slot]);
        }

        if( ++ x >= TRADE_WIDTH) {
            x = 0;
            y ++;
        }
    }

    //SetStatusTRADE(playerid, true);
    SelectTextDraw(targetid, 0xFF0000FF);
}

stock TradeTestTwo(playerid,targetid) {
    if(IsPlayerOpenTRADE(targetid)) {
        TRADEDestroySlots(targetid);

        if(IsPlayrClickSlotTRADE(targetid)) {
            TRADEDestroysClickedSlotT(targetid);
        }
    }
    new amount[5];
    for(new slot, x, y; slot < TRADE_SIZE; slot++) {
        gTRADEPTDSlots[targetid][slot] =
        CreatePlayerTextDraw            (targetid, 175.0808 + (x * TRADE_SPACE_SLOTS), 253.464 + (y * TRADE_SPACE_SLOTS*1.3), !"_");
        PlayerTextDrawTextSize          (targetid, gTRADEPTDSlots[targetid][slot], 27.0000, 36.0000);
        PlayerTextDrawBackgroundColor   (targetid, gTRADEPTDSlots[targetid][slot], 471604666);
        PlayerTextDrawFont              (targetid, gTRADEPTDSlots[targetid][slot], 5);
        PlayerTextDrawSetSelectable     (targetid, gTRADEPTDSlots[targetid][slot], true);

        new
            item_idx = GetPlayerTRADEItemByIDX(targetid, slot),
            item_id = GetTRADEItemID(item_idx),

            item_amount_idx = GetPlayerTRADEAmountByIDX(targetid, slot)
        ;

        PlayerTextDrawSetPreviewRot     (targetid, gTRADEPTDSlots[targetid][slot],
            gTRADEItem[item_id][iItemPosX], gTRADEItem[item_id][iItemPosY], gTRADEItem[item_id][iItemPosZ], gTRADEItem[item_id][iItemPosC]
        );
        PlayerTextDrawSetPreviewRot     (playerid, gTRADEPTDSlots[targetid][slot],
            gTRADEItem[item_id][iItemPosX], gTRADEItem[item_id][iItemPosY], gTRADEItem[item_id][iItemPosZ], gTRADEItem[item_id][iItemPosC]
        );

        PlayerTextDrawSetPreviewModel   (targetid, gTRADEPTDSlots[targetid][slot],
            (item_idx == INVALID_TRADE_ITEM_ID) ? (18670) : (item_idx)
        );
        PlayerTextDrawSetPreviewModel   (playerid, gTRADEPTDSlots[targetid][slot],
            (item_idx == INVALID_TRADE_ITEM_ID) ? (18670) : (item_idx)
        );

        PlayerTextDrawShow(targetid, gTRADEPTDSlots[targetid][slot]);
        PlayerTextDrawShow(playerid, gTRADEPTDSlots[targetid][slot]);

        format(amount, sizeof(amount),
            "%d",
            item_amount_idx
        );

        gTRADEPTDTextSlots[targetid][TRADE_PTD_AMOUNT][slot] =
        CreatePlayerTextDraw            (targetid, 200.726 + (x * TRADE_SPACE_SLOTS), 281.913  + (y * TRADE_SPACE_SLOTS*1.3), amount);
        PlayerTextDrawAlignment         (targetid, gTRADEPTDTextSlots[targetid][TRADE_PTD_AMOUNT][slot], 3);
        PlayerTextDrawLetterSize        (targetid, gTRADEPTDTextSlots[targetid][TRADE_PTD_AMOUNT][slot], 0.0961, 0.5712);
        PlayerTextDrawSetShadow         (targetid, gTRADEPTDTextSlots[targetid][TRADE_PTD_AMOUNT][slot], 0);

        if(item_amount_idx > 1) {
            PlayerTextDrawShow(targetid, gTRADEPTDTextSlots[targetid][TRADE_PTD_AMOUNT][slot]);
            PlayerTextDrawShow(playerid, gTRADEPTDTextSlots[targetid][TRADE_PTD_AMOUNT][slot]);
        }

        if( ++ x >= TRADE_WIDTH) {
            x = 0;
            y ++;
        }
    }

    //SetStatusTRADE(playerid, true);
    SelectTextDraw(targetid, 0xFF0000FF);
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу