Как поместить нужное кол-во скинов на одну страницу в 0.3х системе выбора скинов -
Eims - 13.05.2013
Всем привет. У меня такой вот вопрос. Сделал выбор скинов через новую систему 0.3х и всё работает. Но для TDM режима надо сделать так, чтобы на определённой странице отображались определённые скины (в разных количествах)
То есть сейчас на одной странице такой системы отображается 21 скин (3 строки, по 7 скинов в каждой). А мне надо чтобы на первой странице отображалось, например, 4 скина, на второй - 7, на третьей - 3 и т.д.
Все мои умозаключения дошли до того, что за распределение скинов по странице отвечает вот этот код
PHP код:
ShowPlayerModelPreviews(playerid)
{
new x=0;
new Float:BaseX = DIALOG_BASE_X;
new Float:BaseY = DIALOG_BASE_Y - (SPRITE_DIM_Y * 0.33); // down a bit
new linetracker = 0;
new itemat = GetPVarInt(playerid, "skinc_page") * SELECTION_ITEMS;
// Destroy any previous ones created
DestroyPlayerModelPreviews(playerid);
while(x != SELECTION_ITEMS && itemat < gTotalItems)
{
if(linetracker == 0)
{
BaseX = DIALOG_BASE_X + 25.0;
BaseY += SPRITE_DIM_Y + 1.0;
}
if(PlayerInFirstWorld[playerid]==1)
{
gSelectionItemsW1[playerid][x] = CreateModelPreviewTextDraw(playerid, gItemListW1[itemat], BaseX, BaseY, SPRITE_DIM_X, SPRITE_DIM_Y);
gSelectionItemsTagW1[playerid][x] = gItemListW1[itemat];
}
else if(PlayerInSecondWorld[playerid]==1)
{
gSelectionItemsW2[playerid][x] = CreateModelPreviewTextDraw(playerid, gItemListW2[itemat], BaseX, BaseY, SPRITE_DIM_X, SPRITE_DIM_Y);
gSelectionItemsTagW2[playerid][x] = gItemListW2[itemat];
}
BaseX += SPRITE_DIM_X + 1.0; // move on the X for the next sprite
linetracker++;
if(linetracker == ITEMS_PER_LINE) linetracker = 0;
itemat++;
x++;
}
}
Но знаний не хватает для того, чтобы переделать его под мои нужны.
---
Функция немного переделана. Все отличия в этом куске
PHP код:
if(PlayerInFirstWorld[playerid]==1)
{
gSelectionItemsW1[playerid][x] = CreateModelPreviewTextDraw(playerid, gItemListW1[itemat], BaseX, BaseY, SPRITE_DIM_X, SPRITE_DIM_Y);
gSelectionItemsTagW1[playerid][x] = gItemListW1[itemat];
}
else if(PlayerInSecondWorld[playerid]==1)
{
gSelectionItemsW2[playerid][x] = CreateModelPreviewTextDraw(playerid, gItemListW2[itemat], BaseX, BaseY, SPRITE_DIM_X, SPRITE_DIM_Y);
gSelectionItemsTagW2[playerid][x] = gItemListW2[itemat];
}
В общем, как реализовать задуманное, может кто подсказать?
P.S. Код взят из FS "skinchanger", идущего вместе с дефолтным сервером SA-MP
UPD: Извиняюсь, если подобная тема была. Просто не представляю как надо задать вопрос, чтобы выйти на такую тему =)
Re: Как поместить нужное кол-во скинов на одну страницу в 0.3х системе выбора скинов -
Eims - 13.05.2013
Идея для реализации у меня есть, но я не могу понять какие функции отвечают за создание окна/иконок с скинами и какая функция распределяет их по экрану в нужных местах. Поэтому и прошу помощи у вас =)
А идея заключается в следующем: Сделать не автоматическое распределение скинов по странице, а вручную прописать нужные скины в коде. То есть сейчас, как я понял, идёт подсчёт скинов из переменной и вывод их на страницу. А там, при нажатии на кнопку, можно просто перекидывать с одной переменной на другую (в которых будут храниться нужные ID).
Вот я пока не могу понять как такое в виде кода реализовать =(