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