SA-MP Forums Archive
Как поместить нужное кол-во скинов на одну страницу в 0.3х системе выбора скинов - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Как поместить нужное кол-во скинов на одну страницу в 0.3х системе выбора скинов (/showthread.php?tid=436881)



Как поместить нужное кол-во скинов на одну страницу в 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(
!= 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(playeridgItemListW1[itemat], BaseXBaseYSPRITE_DIM_XSPRITE_DIM_Y);
              
gSelectionItemsTagW1[playerid][x] = gItemListW1[itemat];
          }
          else if(
PlayerInSecondWorld[playerid]==1)
          {
              
gSelectionItemsW2[playerid][x] = CreateModelPreviewTextDraw(playeridgItemListW2[itemat], BaseXBaseYSPRITE_DIM_XSPRITE_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_LINElinetracker 0;
        
itemat++;
        
x++;
    }

Но знаний не хватает для того, чтобы переделать его под мои нужны.
---
Функция немного переделана. Все отличия в этом куске
PHP код:
if(PlayerInFirstWorld[playerid]==1)
        {
              
gSelectionItemsW1[playerid][x] = CreateModelPreviewTextDraw(playeridgItemListW1[itemat], BaseXBaseYSPRITE_DIM_XSPRITE_DIM_Y);
              
gSelectionItemsTagW1[playerid][x] = gItemListW1[itemat];
          }
          else if(
PlayerInSecondWorld[playerid]==1)
          {
              
gSelectionItemsW2[playerid][x] = CreateModelPreviewTextDraw(playeridgItemListW2[itemat], BaseXBaseYSPRITE_DIM_XSPRITE_DIM_Y);
              
gSelectionItemsTagW2[playerid][x] = gItemListW2[itemat];
          } 
В общем, как реализовать задуманное, может кто подсказать?
P.S. Код взят из FS "skinchanger", идущего вместе с дефолтным сервером SA-MP
UPD: Извиняюсь, если подобная тема была. Просто не представляю как надо задать вопрос, чтобы выйти на такую тему =)


Re: Как поместить нужное кол-во скинов на одну страницу в 0.3х системе выбора скинов - Eims - 13.05.2013

Идея для реализации у меня есть, но я не могу понять какие функции отвечают за создание окна/иконок с скинами и какая функция распределяет их по экрану в нужных местах. Поэтому и прошу помощи у вас =)
А идея заключается в следующем: Сделать не автоматическое распределение скинов по странице, а вручную прописать нужные скины в коде. То есть сейчас, как я понял, идёт подсчёт скинов из переменной и вывод их на страницу. А там, при нажатии на кнопку, можно просто перекидывать с одной переменной на другую (в которых будут храниться нужные ID).
Вот я пока не могу понять как такое в виде кода реализовать =(