Jump to content

Таблица с интервальными значениями


Recommended Posts

Как сделать таблицу с интервальными значениями, чтобы по команде(забиндиной на клавишу например) число плюсовалось на +1 и при этом не выходило за рамки этой таблицы.?

Вот числа по порядку, список всех педов со спецактёрами. (хочу один скинселектор переделать. в комьюнити выложу когда сделаю)

0-2, 7, 9-29, 
30-41, 43-52, 
53-64, 66-73, 
75-76, 77-85, 
87-99, 100-118, 
120-122, 123-144, 
145-148, 150-167, 
168-189, 190-207, 
209-212, 213-234, 
235-238, 240-257, 
258-272, 274-288, 
290-312 

Link to comment

Если я правильно понял, то вот так:

  
Skins = 
{ 
    0-2, 7, 9-29, 
    30-41, 43-52, 
    53-64, 66-73, 
    75-76, 77-85, 
    87-99, 100-118, 
    120-122, 123-144, 
    145-148, 150-167, 
    168-189, 190-207, 
    209-212, 213-234, 
    235-238, 240-257, 
    258-272, 274-288, 
    290-312 
}; 
  
g_SkinIndex = 1; 
  
function NextSkin() 
    local iNewIndex = g_SkinIndex + 1; 
     
    if iNewIndex > table.getn( Skins ) then 
        iNewIndex = 1; 
    end 
     
    return Skins[ iNewIndex ]; 
end 
  
function PrevSkin() 
    local iNewIndex = g_SkinIndex - 1; 
     
    if iNewIndex < 1 then 
        iNewIndex = table.getn( Skins ); 
    end 
     
    return Skins[ iNewIndex ]; 
end 
  

В таблице 0-2 придётся вручную прописать промежутки, 0, 1, 2 и т.д.

Link to comment
function camf() 
local px,py,pz = getElementPosition( source ) 
local rot = setPedRotation(source, 1) 
setCameraMatrix( source, px, py+2, pz, px, py, pz) 
end 
addEvent("FrontCamera", true) 
addEventHandler("FrontCamera", getRootElement(), camf) 
  
function selected() 
fadeCamera(source, true) 
setCameraTarget(source, source) 
outputChatBox("Skin selected!!!", source) 
end 
addEvent("SkinSelected", true) 
addEventHandler("SkinSelected", getRootElement(), selected) 
  
-- 
tblSkins = 
{ 
    0-2, 7, 9-29, 
    30-41, 43-52, 
    53-64, 66-73, 
    75-76, 77-85, 
    87-99, 100-118, 
    120-122, 123-144, 
    145-148, 150-167, 
    168-189, 190-207, 
    209-212, 213-234, 
    235-238, 240-257, 
    258-272, 274-288, 
    290-312 
}; 
  
g_SkinIndex = 1; 
  
function NextSkin() 
    local iNewIndex = g_SkinIndex + 1; 
    setPedSkin(source, iNewIndex) 
    
    if iNewIndex > table.getn( tblSkins ) then 
        iNewIndex = 1; 
    end 
    
    return tblSkins[ iNewIndex ]; 
end 
addEvent("SkinRight", true) 
addEventHandler("SkinRight", getRootElement(), NextSkin) 
  
function PrevSkin() 
    local iNewIndex = g_SkinIndex - 1; 
    setPedSkin(source, iNewIndex) 
    if iNewIndex < 1 then 
        iNewIndex = table.getn( tblSkins ); 
    end 
    
    return tblSkins[ iNewIndex ]; 
end 
addEvent("SkinLeft", true) 
addEventHandler("SkinLeft", getRootElement(), PrevSkin) 
-- 
  
  
function skinrand() 
local skin = getPedSkin(source) 
setPedSkin(source, math.random(312)) 
end 
addEvent("SkinRand", true) 
addEventHandler("SkinRand", getRootElement(), skinrand) 

Вот я прикрутил к своему скрипту.

По идеи там 4 кнопки - Random, ok, предыдущий, следующий скин

у меня почему -то при нажатии пред - делается CJ

при нажатии след - скины меняются но явно не по порядку(порядковуму номеру)

d478e1474916.jpg

**названия переменных я немного изменил

**управляется кнопками от клиента

**сорри за мою гнилую тупость, я код изменил, я не понял какая переменная есть конечный результат и всеравно также криво работает.

если не то то вот:

function camf() 
local px,py,pz = getElementPosition( source ) 
local rot = setPedRotation(source, 1) 
setCameraMatrix( source, px, py+2, pz, px, py, pz) 
end 
addEvent("FrontCamera", true) 
addEventHandler("FrontCamera", getRootElement(), camf) 
  
function selected() 
fadeCamera(source, true) 
setCameraTarget(source, source) 
outputChatBox("Skin selected!!!", source) 
end 
addEvent("SkinSelected", true) 
addEventHandler("SkinSelected", getRootElement(), selected) 
  
-- 
tblSkins = 
{ 
    0-2, 7, 9-29, 
    30-41, 43-52, 
    53-64, 66-73, 
    75-76, 77-85, 
    87-99, 100-118, 
    120-122, 123-144, 
    145-148, 150-167, 
    168-189, 190-207, 
    209-212, 213-234, 
    235-238, 240-257, 
    258-272, 274-288, 
    290-312 
}; 
  
g_SkinIndex = 1; 
  
function NextSkin() 
    local iNewIndex = g_SkinIndex + 1; 
    if iNewIndex > table.getn( tblSkins ) then 
        iNewIndex = 1; 
        setPedSkin(source, iNewIndex) 
    end 
    
    return tblSkins[ iNewIndex ]; 
end 
addEvent("SkinRight", true) 
addEventHandler("SkinRight", getRootElement(), NextSkin) 
  
function PrevSkin() 
    local iNewIndex = g_SkinIndex - 1; 
    if iNewIndex < 1 then 
        iNewIndex = table.getn( tblSkins ); 
        setPedSkin(source, iNewIndex) 
    end 
    
    return tblSkins[ iNewIndex ]; 
end 
addEvent("SkinLeft", true) 
addEventHandler("SkinLeft", getRootElement(), PrevSkin) 
-- 
  
  
function skinrand() 
local skin = getPedSkin(source) 
setPedSkin(source, math.random(312)) 
end 
addEvent("SkinRand", true) 
addEventHandler("SkinRand", getRootElement(), skinrand) 

Link to comment

Если это не шутка надо мной, то я уже сделал:

function camf() 
local px,py,pz = getElementPosition( source ) 
local rot = setPedRotation(source, 1) 
setCameraMatrix( source, px, py+2, pz, px, py, pz) 
end 
addEvent("FrontCamera", true) 
addEventHandler("FrontCamera", getRootElement(), camf) 
  
function selected() 
fadeCamera(source, true) 
setCameraTarget(source, source) 
outputChatBox("Skin selected!!!", source) 
end 
addEvent("SkinSelected", true) 
addEventHandler("SkinSelected", getRootElement(), selected) 
  
-- 
tblSkins = 
{ 
    0, 1, 2, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
    36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 
    53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 
    70, 71, 72, 73, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 
    88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 
    103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 
    117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 
    132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 
    146, 147, 148, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 
    161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 
    175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 
    189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 201, 
    203, 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 
    218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 
    232, 233, 234, 235, 236, 237, 238, 240, 241, 242, 243, 244, 245, 246, 
    247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 
    261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 275, 
    276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 290, 
    291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 
    305, 306, 307, 308, 309, 310, 311, 312 
}; 
  
g_SkinIndex = 1; 
  
function NextSkin() 
    local iNewIndex = g_SkinIndex + 1; 
    if iNewIndex > table.getn( tblSkins ) then 
        iNewIndex = 1; 
        setPedSkin(source, iNewIndex) 
    end 
    
    return tblSkins[ iNewIndex ]; 
end 
addEvent("SkinRight", true) 
addEventHandler("SkinRight", getRootElement(), NextSkin) 
  
function PrevSkin() 
    local iNewIndex = g_SkinIndex - 1; 
    if iNewIndex < 1 then 
        iNewIndex = table.getn( tblSkins ); 
        setPedSkin(source, iNewIndex) 
    end 
    
    return tblSkins[ iNewIndex ]; 
end 
addEvent("SkinLeft", true) 
addEventHandler("SkinLeft", getRootElement(), PrevSkin) 
-- 
  
  
function skinrand() 
local skin = getPedSkin(source) 
setPedSkin(source, math.random(312)) 
end 
addEvent("SkinRand", true) 
addEventHandler("SkinRand", getRootElement(), skinrand) 

все равно не канает жму влево скины меняются, жму вправо на каталину переключилось и далее не движется :lol:

Link to comment

Оно дальше не движется потому что вы логику кода не пытались понять

Как вы думаете для чего таблица скинов? iNewIndex это индекс таблицы, а tblSkins[ iNewIndex ] вернёт скин по индексу из таблицы, для чего по вашему функция делает возврат? Вам всего лишь нужно было setPedSkin( source, NextSkin() )

Функции NextSkin и PrevSkin возвращают ID следующего/предыдущего скина

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...