TwiX! Posted December 21, 2011 Share Posted December 21, 2011 (edited) сделал инфо в gui (grid) но на какого бы я игрока не нажимал, показывает только моё инфо, как исправить? client как у меня.. function startGUI() --Start gui local sgn = getElementData(getLocalPlayer(), "info.signature") -- и другие что в InfoUsers users_tab = guiCreateTab("Users",srtabpanel) --создал сам таб с игроками users_grid = guiCreateGridList(11,41,203,327,false,users_tab) -- players grid(выбор игрока0 usersInfo_grid = guiCreateGridList(223,41,414,328,false,users_tab) --(грид где всё инфо) guiGridListSetSelectionMode(usersInfo_grid,2) namecolumn = guiGridListAddColumn(usersInfo_grid,"Name:",0.5) --создал где имя infocolumn = guiGridListAddColumn(usersInfo_grid,"Value:",0.5) -- и где значение InfoUsers = {{"Name: ", " "..string.gsub(getPlayerName(getLocalPlayer()),"#%x%x%x%x%x%x", "")},{"Country: "," "..cny},{"E-Mail: "," "..mail},{"Age: "," "..age},{"Gender: "," "..gender},{"Contact: "," "..contact},{"Signature: "," "..sgn},{"Money: "," "..money},{"Rank: "," "..rank},{"Wins: "," "..DMWins},{"Loses: "," "..Loses}} -- это для записи в "Name" и "Value" usersprogressbar = guiCreateProgressBar(278,7,358,28,false,users_tab) -- сам прогресс бар guiGridListSetSortingEnabled ( usersInfo_grid, false ) --выключил сортировку local column4 = guiGridListAddColumn( users_grid, "Users", 0.9 ) --добовляю юсерс if ( column4 ) then for id, player in ipairs(getElementsByType("player")) do row = guiGridListAddRow ( users_grid ) guiGridListSetItemText ( users_grid, row, column4, string.gsub(getPlayerName ( player ),"#%x%x%x%x%x%x", ""), false, false ) end end --получил всех игроков убрал хекс end addEventHandler("onClientResourceStart",getResourceRootElement(getThisResource()),startGUI) function gridlistPlayerSelect() -- функция выбора игрока if source == users_grid then -- если кто то нажал на игрока в грид листе то guiGridListClear(usersInfo_grid) -- очищаю правую колонку что бы он не копировал их ниже if ( usersprogressbar ) then -- если это наш прогресс бар, то guiProgressBarSetProgress(usersprogressbar, rank) -- устанавливаем прогресс progress = guiProgressBarGetProgress(usersprogressbar) -- проверяем какой сейчас он установлен local selectedUsers = guiGridListGetItemText(users_grid, guiGridListGetSelectedItem(users_grid), 1) -- сам выбор игрока if ( selectedUsers ) then -- если игрок выбран то for i,v in ipairs (InfoUsers) do local row = guiGridListAddRow (usersInfo_grid) --создаём row guiGridListSetItemText (usersInfo_grid, row, 1, v[1], false, true) --утсанавливаем значение что в "name" (UsersInfo) guiGridListSetItemText (usersInfo_grid, row, 2, v[2], false, true) -- что в "Value" end end end end end addEventHandler("onClientGUIClick", getResourceRootElement(getThisResource()), gridlistPlayerSelect) -- event Edited December 23, 2011 by Guest Link to comment
MX_Master Posted December 21, 2011 Share Posted December 21, 2011 А как оно будет меняться, если ты не добавил обработчик при клике на другой пункт? И ваще, выкладывай полные коды, у меня кофе нет, чтобы гадать, что же ты там от нас скрыл.. Link to comment
TwiX! Posted December 21, 2011 Author Share Posted December 21, 2011 1 пост, добавил весь код как его добавить? у мея не получается сделать с grid листом только Link to comment
MX_Master Posted December 21, 2011 Share Posted December 21, 2011 Итак, этот совет еще актуален А как оно будет меняться, если ты не добавил обработчик при клике на другой пункт? и откуда у тебя там source в функции, если эта функция не является обработчиком какого-либо события? Link to comment
TwiX! Posted December 21, 2011 Author Share Posted December 21, 2011 Итак, этот совет еще актуаленА как оно будет меняться, если ты не добавил обработчик при клике на другой пункт? и откуда у тебя там source в функции, если эта функция не является обработчиком какого-либо события? можно просто исправить и показать где ошибка, а не гадать что делать.. Link to comment
Vladimir5 Posted December 22, 2011 Share Posted December 22, 2011 Мы можем опмочь тебе с кодом,а не делать его за тебя. Так что выкладывай полный код. Или найми скриптера. Link to comment
kashtesov Posted December 22, 2011 Share Posted December 22, 2011 они пытаются показать тебе как исправить чтобы в дальнейшем ты не тупил... Link to comment
MX_Master Posted December 22, 2011 Share Posted December 22, 2011 Автор топика, ответь на вопрос, откуда у тебя в той функции взялась переменная source? Это же обычный вопрос. Link to comment
TwiX! Posted December 22, 2011 Author Share Posted December 22, 2011 (edited) Мы можем опмочь тебе с кодом,а не делать его за тебя.Так что выкладывай полный код. Или найми скриптера. это полный код, зачем мне скриптер если я сам могу сделать? тем более если он сделает, я то ничё не пойму.. незнаю пример же можно показать.. я попросил помощи только как сделать проверку, чтобы показывал инфо и другого игрока, а не сделать весь код, исправить мой. как бы мне сразу с сампа (pwn) на lua сложновато перейти.. Edited December 22, 2011 by Guest Link to comment
TwiX! Posted December 22, 2011 Author Share Posted December 22, 2011 они пытаются показать тебе как исправить чтобы в дальнейшем ты не тупил... как то не заметно где они показывают это Автор топика, ответь на вопрос, откуда у тебя в той функции взялась переменная source? Это же обычный вопрос. ..как мне ещё тогда проверку сделать по другому? Link to comment
Kernell Posted December 22, 2011 Share Posted December 22, 2011 Qwert123, Вы выложили полную кашу в место нормального логичного кода, и ещё возмущаетесь. Вам правильно всё говорят. Поставим вопрос по другому: что такое source в Вашем коде? Link to comment
TwiX! Posted December 22, 2011 Author Share Posted December 22, 2011 Qwert123,Вы выложили полную кашу в место нормального логичного кода, и ещё возмущаетесь. Вам правильно всё говорят. Поставим вопрос по другому: что такое source в Вашем коде? подправил код, и описал.. эм.. как бы просто source Link to comment
MX_Master Posted December 22, 2011 Share Posted December 22, 2011 ВОТ! Мы как раз и ждали 49 строку. Тебе надо таблицу InfoUsers обновлять в этой функции, потому что InfoUsers всегда содержит данные локального игрока, т.е. ТВОИ. Откуда ты берешь данные игрока - неизвестно, так что тебе лучше знать откуда брать данные других игроков для обновления таблицы InfoUsers. Ну или нужно хранить данные всех игроков с помощью ElementData, чтобы потом можно было их легко вставить в GUI. Link to comment
TwiX! Posted December 22, 2011 Author Share Posted December 22, 2011 ВОТ! Мы как раз и ждали 49 строку.Тебе надо таблицу InfoUsers обновлять в этой функции, потому что InfoUsers всегда содержит данные локального игрока, т.е. ТВОИ. Откуда ты берешь данные игрока - неизвестно, так что тебе лучше знать откуда брать данные других игроков для обновления таблицы InfoUsers. Ну или нужно хранить данные всех игроков с помощью ElementData, чтобы потом можно было их легко вставить в GUI. вся статистика у меня сохраняется, как тогда сделать выбор игрока, и показать его статистику? а не только свою Link to comment
MX_Master Posted December 23, 2011 Share Posted December 23, 2011 а как она у тебя хранится? в каком виде и где? Link to comment
TwiX! Posted December 23, 2011 Author Share Posted December 23, 2011 а как она у тебя хранится? executeSQLCreateTable в каком виде setElementData где? server.lua client ну например local sgn = getElementData(getLocalPlayer(), "info.signature") Link to comment
MX_Master Posted December 23, 2011 Share Posted December 23, 2011 Ну значит названия параметров ElementData ты все знаешь, при клике на гуевый ник игрока, вписываешь в нужные поля данные из ElementData игрока. Ты попробуй, еси чо потом подправим Link to comment
TwiX! Posted December 23, 2011 Author Share Posted December 23, 2011 Ну значит названия параметров ElementData ты все знаешь, при клике на гуевый ник игрока, вписываешь в нужные поля данные из ElementData игрока. Ты попробуй, еси чо потом подправим значит эта функция function gridlistPlayerSelect() у меня не правильная вся? подправил 1 пост Link to comment
MX_Master Posted December 23, 2011 Share Posted December 23, 2011 там ты берешь данные из таблицы, а нужно из ElementData нужного игрока Link to comment
TwiX! Posted December 23, 2011 Author Share Posted December 23, 2011 там ты берешь данные из таблицы, а нужно из ElementData нужного игрока я тогда не понимаю как в грид листе показать чью то информацию так как InfoUsers берёт данные из ElementData Link to comment
MX_Master Posted December 23, 2011 Share Posted December 23, 2011 У тебя есть ники игроков. По нику можно узнать элемент игрока. По элементу игрока можно получить ElementData этого элемента Link to comment
StUNt71 Posted December 23, 2011 Share Posted December 23, 2011 addEventHandler("onClientGUIClick", users_grid, function () guiGridListClear(usersInfo_grid) if (usersprogressbar) then guiProgressBarSetProgress(usersprogressbar, rank) progress = guiProgressBarGetProgress(usersprogressbar) local selectedUsers = guiGridListGetItemText(users_grid, guiGridListGetSelectedItem(users_grid), 1) if (selectedUsers) then local player = getPlayerFromName(selectedUsers) if player then InfoUsers = { {"Name: ", " " .. string.gsub(selectedUsers, "#%x%x%x%x%x%x", "")}, {"Country: ", " " .. cny}, {"E-Mail: ", " " .. mail}, {"Age: ", " " .. age}, {"Gender: ", " " .. gender}, {"Contact: ", " " .. contact}, {"Signature: ", " " .. getElementData(player, "info.signature")}, {"Money: ", " " .. money}, {"Rank: ", " " .. rank}, {"Wins: ", " " .. DMWins}, {"Loses: ", " " .. Loses} } -- Сам получай эти значения for _, info in ipairs (InfoUsers) do local row = guiGridListAddRow (usersInfo_grid) guiGridListSetItemText(usersInfo_grid, row, 1, info[1], false, true) guiGridListSetItemText(usersInfo_grid, row, 2, info[2], false, true) end end end end end, false ) Обработчик события при клике. Link to comment
MX_Master Posted December 23, 2011 Share Posted December 23, 2011 остальные данные нужно брать тоже из ElementData Link to comment
StUNt71 Posted December 23, 2011 Share Posted December 23, 2011 Увы я их не знаю. Я там комментов подписал, что он сам должен получить эти значения. Link to comment
TwiX! Posted December 24, 2011 Author Share Posted December 24, 2011 function getInfoUsers() local cnt = getElementData(getLocalPlayer(), "info.country") local age = getElementData(getLocalPlayer(), "info.age") local email = getElementData(getLocalPlayer(), "info.email") local gebder = getElementData(getLocalPlayer(), "info.gender") local contact = getElementData(getLocalPlayer(), "info.contact") local sgn = getElementData(getLocalPlayer(), "info.signature") local DMWins = getElementData(getLocalPlayer(),"Wins") local Loses = getElementData(getLocalPlayer(),"Loses") local money = getElementData(getLocalPlayer(), "data.money") guiGridListClear(usersInfo_grid) local selectedUsers = guiGridListGetItemText(users_grid, guiGridListGetSelectedItem(users_grid), 1) if (selectedUsers) then local Player = findPlayerByName(selectedUsers) if Player then if (usersprogressbar) then guiProgressBarSetProgress(usersprogressbar, ratio) progress = guiProgressBarGetProgress(usersprogressbar) InfoUsers = {{"Name: ", " "..string.gsub(getPlayerName(getLocalPlayer()),"#%x%x%x%x%x%x", "")},{"Country: "," "..cnt},{"E-Mail: "," "..email},{"Age: "," "..age},{"Gender: "," "..Edit5},{"Contact: "," "..contact},{"Signature: "," "..sgn},{"Money: "," "..money},{"Rank: "," "..rank},{"Wins: "," "..DMWins},{"Loses: "," "..Loses}} for _, info in ipairs (InfoUsers) do local row = guiGridListAddRow (usersInfo_grid) guiGridListSetItemText(usersInfo_grid, row, 1, info[1], false, true) guiGridListSetItemText(usersInfo_grid, row, 2, info[2], false, true) end end end end end addEventHandler("onClientGUIClick",getResourceRootElement(getThisResource()), getInfoUsers) или addEventHandler ( "onClientGUIClick", users_grid, getInfoUsers, false ) всё равно только моё инфо function findPlayerByName (name) local player = getPlayerFromName(name) if player then return player end for i, player in ipairs(getElementsByType("player")) do if string.find(string.gsub(getPlayerName(player):lower(),"#%x%x%x%x%x%x", ""), name:lower(), 1, true) then return player end end return false end 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