el_motoblock Posted December 2, 2012 Share Posted December 2, 2012 Как сделать таблицу с интервальными значениями, чтобы по команде(забиндиной на клавишу например) число плюсовалось на +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
Kernell Posted December 2, 2012 Share Posted December 2, 2012 Если я правильно понял, то вот так: 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
el_motoblock Posted December 2, 2012 Author Share Posted December 2, 2012 (edited) Почему же? 0-cj 1-truth 2-maccer по моему или как там его https://wiki.multitheftauto.com/wiki/Special_Skins_Page за табл спс, я просто думал что "-" за минус сойдет и будет мешать Edited December 2, 2012 by Guest Link to comment
el_motoblock Posted December 2, 2012 Author Share Posted December 2, 2012 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 при нажатии след - скины меняются но явно не по порядку(порядковуму номеру) **названия переменных я немного изменил **управляется кнопками от клиента **сорри за мою гнилую тупость, я код изменил, я не понял какая переменная есть конечный результат и всеравно также криво работает. если не то то вот: 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
Kernell Posted December 2, 2012 Share Posted December 2, 2012 Я же сказал "В таблице 0-2 придётся вручную прописать промежутки, 0, 1, 2 и т.д.". Конечно он его за минус сочтёт, а вы как хотели? Link to comment
el_motoblock Posted December 2, 2012 Author Share Posted December 2, 2012 а если я все цифры пропишу от начала до конца через запятую, то выбор будет по порядку? Link to comment
Kernell Posted December 2, 2012 Share Posted December 2, 2012 Я об этом и говорил, там где у вас 0-2, 7, 9-29... - вручную исправьте! 0, 1, 2, 7, 9, 10, 11, 12, 13, ... 29 Link to comment
el_motoblock Posted December 2, 2012 Author Share Posted December 2, 2012 Если это не шутка надо мной, то я уже сделал: 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) все равно не канает жму влево скины меняются, жму вправо на каталину переключилось и далее не движется Link to comment
Kernell Posted December 2, 2012 Share Posted December 2, 2012 Оно дальше не движется потому что вы логику кода не пытались понять Как вы думаете для чего таблица скинов? iNewIndex это индекс таблицы, а tblSkins[ iNewIndex ] вернёт скин по индексу из таблицы, для чего по вашему функция делает возврат? Вам всего лишь нужно было setPedSkin( source, NextSkin() ) Функции NextSkin и PrevSkin возвращают ID следующего/предыдущего скина Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now