habel Posted February 21, 2016 Share Posted February 21, 2016 ребята у меня такая проблемма, я сделал список игроков, но внутри списка, Gridлиста обьекты изначально стоят нормально, но если включить мышку и потянуть между столбцами или нажать на кнопочку типо развернуть столбец, начинается каша, и иногда даже копируются при обновлении списки вот код GUIEditor5 = { gridlist = {}, window = {} } function visibleTab() GUIEditor5.window[1] = guiCreateWindow(0.25, 0.21, 0.52, 0.65, "Список игроков", true) guiWindowSetMovable(GUIEditor5.window[1], false) guiWindowSetSizable(GUIEditor5.window[1], false) guiSetAlpha(GUIEditor5.window[1], 0.70) GUIEditor5.gridlist[1] = guiCreateGridList(0.01, 0.05, 0.97, 0.93, true, GUIEditor5.window[1]) guiGridListAddColumn(GUIEditor5.gridlist[1], "ID", 0.2) guiGridListAddColumn(GUIEditor5.gridlist[1], "Имя", 0.2) guiGridListAddColumn(GUIEditor5.gridlist[1], "Уровень", 0.2) guiGridListAddColumn(GUIEditor5.gridlist[1], "Пинг", 0.2) guiSetAlpha(GUIEditor5.gridlist[1], 0.65) guiSetVisible(GUIEditor5.window[1], false) setTimer(tabTime, 1000, 0) end addEventHandler("onClientResourceStart", getRootElement(), visibleTab) function guiviz() showCursor(not isCursorShowing()) setPlayerHudComponentVisible("radar", not isPlayerHudComponentVisible("radar")) setPlayerHudComponentVisible("weapon", not isPlayerHudComponentVisible("weapon")) setPlayerHudComponentVisible("clock", not isPlayerHudComponentVisible("clock")) setPlayerHudComponentVisible("health", not isPlayerHudComponentVisible("health")) setPlayerHudComponentVisible("money", not isPlayerHudComponentVisible("money")) setPlayerHudComponentVisible("armour", not isPlayerHudComponentVisible("armour")) setPlayerHudComponentVisible("wanted", not isPlayerHudComponentVisible("wanted")) setPlayerHudComponentVisible("ammo", not isPlayerHudComponentVisible("ammo")) guiSetVisible(GUIEditor5.window[1], not guiGetVisible(GUIEditor5.window[1])) end bindKey("tab", "down", guiviz) function tabTime() for index, srs in pairs(getElementsByType("player")) do if(getElementData(srs,"id")) then guiGridListAddRow(GUIEditor5.gridlist[1]) guiGridListSetItemText(GUIEditor5.gridlist[1], getElementData(srs, "id"), 1, tostring(getElementData(srs, "id")), false, false) guiGridListSetItemText(GUIEditor5.gridlist[1], getElementData(srs, "id"), 2, tostring(getPlayerName(srs)), false, false) guiGridListSetItemText(GUIEditor5.gridlist[1], getElementData(srs, "id"), 3, tostring(getElementData(srs,"lvl")), false, false) guiGridListSetItemText(GUIEditor5.gridlist[1], getElementData(srs, "id"), 4, tostring(getPlayerPing(srs)), false, false) end end end Link to comment
JHarmon Posted February 21, 2016 Share Posted February 21, 2016 Дубли появлялись, т.к. не чистился грид, смотреть guiGridListClear. Каша появлялась из-за того, что 2 аргументом у guiGridListSetItemText шел, вероятно, id игрока, но зачем? guiGridListAddRow вернет номер только что созданной строки. В целом... Реализация так себе, почему бы не вносить игроков в список при подключении, а при отключении удалять? Ну и при изменении имени или уровня обновлять данные. На будущее... Лучше использовать тег [/lua], а не [/code]... Исправленный код: GUIEditor5 = { gridlist = {}, window = {} } function visibleTab() GUIEditor5.window[1] = guiCreateWindow(0.25, 0.21, 0.52, 0.65, "Список игроков", true) guiWindowSetMovable(GUIEditor5.window[1], false) guiWindowSetSizable(GUIEditor5.window[1], false) guiSetAlpha(GUIEditor5.window[1], 0.70) GUIEditor5.gridlist[1] = guiCreateGridList(0.01, 0.05, 0.97, 0.93, true, GUIEditor5.window[1]) guiGridListAddColumn(GUIEditor5.gridlist[1], "ID", 0.2) guiGridListAddColumn(GUIEditor5.gridlist[1], "Имя", 0.2) guiGridListAddColumn(GUIEditor5.gridlist[1], "Уровень", 0.2) guiGridListAddColumn(GUIEditor5.gridlist[1], "Пинг", 0.2) guiSetAlpha(GUIEditor5.gridlist[1], 0.65) guiSetVisible(GUIEditor5.window[1], false) setTimer(tabTime, 1000, 0) end addEventHandler("onClientResourceStart", getRootElement(), visibleTab) function guiviz() showCursor(not isCursorShowing()) setPlayerHudComponentVisible("radar", not isPlayerHudComponentVisible("radar")) setPlayerHudComponentVisible("weapon", not isPlayerHudComponentVisible("weapon")) setPlayerHudComponentVisible("clock", not isPlayerHudComponentVisible("clock")) setPlayerHudComponentVisible("health", not isPlayerHudComponentVisible("health")) setPlayerHudComponentVisible("money", not isPlayerHudComponentVisible("money")) setPlayerHudComponentVisible("armour", not isPlayerHudComponentVisible("armour")) setPlayerHudComponentVisible("wanted", not isPlayerHudComponentVisible("wanted")) setPlayerHudComponentVisible("ammo", not isPlayerHudComponentVisible("ammo")) guiSetVisible(GUIEditor5.window[1], not guiGetVisible(GUIEditor5.window[1])) end bindKey("tab", "down", guiviz) function tabTime() guiGridListClear(GUIEditor5.gridlist[1]) for index, srs in pairs(getElementsByType("player")) do if(getElementData(srs,"id")) then local row = guiGridListAddRow(GUIEditor5.gridlist[1]) guiGridListSetItemText(GUIEditor5.gridlist[1], row, 1, tostring(getElementData(srs, "id")), false, false) guiGridListSetItemText(GUIEditor5.gridlist[1], row, 2, tostring(getPlayerName(srs)), false, false) guiGridListSetItemText(GUIEditor5.gridlist[1], row, 3, tostring(getElementData(srs,"lvl")), false, false) guiGridListSetItemText(GUIEditor5.gridlist[1], row, 4, tostring(getPlayerPing(srs)), false, false) end end end Оффтоп Что-то народ на РП потянуло в последнее время, неужели самп-рп всех подтолкнули к переходу? Link to comment
habel Posted February 21, 2016 Author Share Posted February 21, 2016 Дубли появлялись, т.к. не чистился грид, смотреть guiGridListClear. Каша появлялась из-за того, что 2 аргументом у guiGridListSetItemText шел, вероятно, id игрока, но зачем? guiGridListAddRow вернет номер только что созданной строки.В целом... Реализация так себе, почему бы не вносить игроков в список при подключении, а при отключении удалять? Ну и при изменении имени или уровня обновлять данные. На будущее... Лучше использовать тег [/lua], а не [/code]... Исправленный код: GUIEditor5 = { gridlist = {}, window = {} } function visibleTab() GUIEditor5.window[1] = guiCreateWindow(0.25, 0.21, 0.52, 0.65, "Список игроков", true) guiWindowSetMovable(GUIEditor5.window[1], false) guiWindowSetSizable(GUIEditor5.window[1], false) guiSetAlpha(GUIEditor5.window[1], 0.70) GUIEditor5.gridlist[1] = guiCreateGridList(0.01, 0.05, 0.97, 0.93, true, GUIEditor5.window[1]) guiGridListAddColumn(GUIEditor5.gridlist[1], "ID", 0.2) guiGridListAddColumn(GUIEditor5.gridlist[1], "Имя", 0.2) guiGridListAddColumn(GUIEditor5.gridlist[1], "Уровень", 0.2) guiGridListAddColumn(GUIEditor5.gridlist[1], "Пинг", 0.2) guiSetAlpha(GUIEditor5.gridlist[1], 0.65) guiSetVisible(GUIEditor5.window[1], false) setTimer(tabTime, 1000, 0) end addEventHandler("onClientResourceStart", getRootElement(), visibleTab) function guiviz() showCursor(not isCursorShowing()) setPlayerHudComponentVisible("radar", not isPlayerHudComponentVisible("radar")) setPlayerHudComponentVisible("weapon", not isPlayerHudComponentVisible("weapon")) setPlayerHudComponentVisible("clock", not isPlayerHudComponentVisible("clock")) setPlayerHudComponentVisible("health", not isPlayerHudComponentVisible("health")) setPlayerHudComponentVisible("money", not isPlayerHudComponentVisible("money")) setPlayerHudComponentVisible("armour", not isPlayerHudComponentVisible("armour")) setPlayerHudComponentVisible("wanted", not isPlayerHudComponentVisible("wanted")) setPlayerHudComponentVisible("ammo", not isPlayerHudComponentVisible("ammo")) guiSetVisible(GUIEditor5.window[1], not guiGetVisible(GUIEditor5.window[1])) end bindKey("tab", "down", guiviz) function tabTime() guiGridListClear(GUIEditor5.gridlist[1]) for index, srs in pairs(getElementsByType("player")) do if(getElementData(srs,"id")) then local row = guiGridListAddRow(GUIEditor5.gridlist[1]) guiGridListSetItemText(GUIEditor5.gridlist[1], row, 1, tostring(getElementData(srs, "id")), false, false) guiGridListSetItemText(GUIEditor5.gridlist[1], row, 2, tostring(getPlayerName(srs)), false, false) guiGridListSetItemText(GUIEditor5.gridlist[1], row, 3, tostring(getElementData(srs,"lvl")), false, false) guiGridListSetItemText(GUIEditor5.gridlist[1], row, 4, tostring(getPlayerPing(srs)), false, false) end end end Оффтоп Что-то народ на РП потянуло в последнее время, неужели самп-рп всех подтолкнули к переходу? да проблема всеравно осталась актуальная( каша то еще изза возможности перемещения столбцов появляется, это как нибудь физически приостановить возможно? чтобы нельзя было изменить размеры столбца и перемещать их между собой Link to comment
DakiLLa Posted February 21, 2016 Share Posted February 21, 2016 Попробуй отключить сортировку столбцов с помощью guiGridListSetSortingEnabled. Link to comment
JHarmon Posted February 21, 2016 Share Posted February 21, 2016 Попробуй добавить: guiSetProperty(GUIEditor5.gridlist[1], "ColumnsMovable", "False") guiSetProperty(GUIEditor5.gridlist[1], "ColumnsSizeable", "False") Попробуй отключить сортировку столбцов с помощью guiGridListSetSortingEnabled. У него проблема возникает из-за перемещения колонок, если я правильно понял. Addition: как вариант еще, чистить и потом заново создавать колонки... Link to comment
habel Posted February 21, 2016 Author Share Posted February 21, 2016 Попробуй добавить: guiSetProperty(GUIEditor5.gridlist[1], "ColumnsMovable", "False") guiSetProperty(GUIEditor5.gridlist[1], "ColumnsSizeable", "False") Попробуй отключить сортировку столбцов с помощью guiGridListSetSortingEnabled. У него проблема возникает из-за перемещения колонок, если я правильно понял. Addition: как вариант еще, чистить и потом заново создавать колонки... К сожалению Movable не работает так как хотелось бы(( колонки всеравно переставляются(( но Sizeble норм работает, я хз что с этим делать, вот это хз как работает ColumnHeader Link to comment
Decro Posted April 16, 2017 Share Posted April 16, 2017 Извиняюсь за некропостинг, однако столкнулся с той же проблемой. guiSetProperty(gridlist,"ColumnsMovable","False") Эта функция абсолютно ничего не изменяет. Колонки так же можно свободно передвигать, ломая этим весь список. Есть ли способы разрешить эту проблему? Link to comment
Fabervox Posted April 16, 2017 Share Posted April 16, 2017 @Decro, есть ещё события, пробовали их отмену? Link to comment
Kenix Posted April 17, 2017 Share Posted April 17, 2017 (edited) Это баг с ColumnsMovable https://bugs.multitheftauto.com/view.php?id=9285 Пишут, что нужно использовать guiGridListSetSortingEnabled(gui, false) Если и это не поможет, то легче сделать свой grid list на dx функциях. Edited April 17, 2017 by Kenix 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