DakiLLa Posted October 31, 2015 Share Posted October 31, 2015 Спасибо.И еще такой вопрос. Если какая проверка что бы определить пробиты колеса у авто или нет? getVehicleWheelStates Link to comment
K1parik Posted November 6, 2015 Share Posted November 6, 2015 И снова проблема Есть вот такая функция на клиенте для показа всех игроков которые есть на сервере. И она работает, но только при первом запуске. В последующих показывает один и тот же результат даже если этих игроков уже нет. Как сделать, что бы она показывала то что есть сейчас, а не то что было? function listPlayerInvait () -- списко всех игроков giuGroup6 = guiCreateWindow ( 400, 400, 300, 420, "Пригласить игрока", false ) centerWindow ( giuGroup6 ) guiSetAlpha ( giuGroup6, 1.0 ) guiSetProperty ( giuGroup6 ) guiWindowSetSizable ( giuGroup6, false ) guiSetVisible ( giuGroup6, true ) destroyElement ( row ) destroyElement ( column ) destroyElement ( playerList ) local playerList = guiCreateGridList ( 20, 30, 260, 270, false, giuGroup6 ) local column = guiGridListAddColumn( playerList, "Игроки", 0.94 ) if ( column ) then for id, player in ipairs(getElementsByType("player")) do local row = guiGridListAddRow ( playerList ) guiGridListSetItemText ( playerList, row, column, getPlayerName ( player ), false, false ) end end giuButtomP2 = guiCreateButton ( 20, 315, 260, 35, "Пригласить", false, giuGroup6 ) giuButtomP1 = guiCreateButton ( 20, 365, 260, 35, "Закрыть", false, giuGroup6 ) addEventHandler ( "onClientGUIClick", giuButtomP1, openGui ) addEventHandler ( "onClientGUIClick", giuButtomP2, function () local row, column = guiGridListGetSelectedItem ( playerList ) if ( row and column ) then local pInvait = guiGridListGetItemText ( playerList, row, column ) if pInvait ~= "" then triggerServerEvent ( "ClientPlayerInvait", localPlayer, pInvait ) else outputChatBox ( "[Группа] Выберите игрока", 255, 0, 0, true ) end end end, false ) end Link to comment
Kenix Posted November 6, 2015 Share Posted November 6, 2015 Если игрок вышел из сервера находишь в гридлисте и удаляешь, если игрок заходит то добавляешь строку. События: https://wiki.multitheftauto.com/wiki/OnClientPlayerJoin https://wiki.multitheftauto.com/wiki/OnClientPlayerQuit Также тебе стоит каждой строке и ячейке установить item data (через guiGridListSetItemData), чтобы искать по userdata, а не по нику игрока. Вот функции для работы guiGridListAddRow guiGridListRemoveRow guiGridListSetItemData guiGridListGetItemData Link to comment
Kernell Posted November 9, 2015 Share Posted November 9, 2015 Слишком замороченно. Проще в нужный момент создать gui окно и сразу наполнять контентом, а при закрытии удалять gui окно полностью. Link to comment
K1parik Posted November 26, 2015 Share Posted November 26, 2015 Еще такой вопрос. Хочется делать такую штуку. Создать ColCuboid и чтобы в нем все было так как есть, а за его пределами все было покрыто каким нибудь туманом. Такое возможно сделать? Link to comment
FranklinRoosevelt Posted November 26, 2015 Share Posted November 26, 2015 Еще такой вопрос. Хочется делать такую штуку. Создать ColCuboid и чтобы в нем все было так как есть, а за его пределами все было покрыто каким нибудь туманом. Такое возможно сделать? Возможно. Link to comment
MMK_033 Posted December 16, 2015 Share Posted December 16, 2015 Доброго времени суток, есть у меня как у новичка пара вопросов, надеюсь, сильно не напрягу. Суть такова: можно ли как-то задействовать в скриптах созданные через редактор карт элементы (которые, разумеется, сохранены в новую карту)? Ну, допустим, расставил я в редакторе карт ботов в ночном клубе. А можно ли, например, к этой карте добавить скрипт, который может присвоить им различные анимации? Ну или как-то иначе их использовать - это не суть, главное, каким образом этого можно добиться и можно ли вообще? Хотя бы на примере одного простого элемента. А, и ещё одно, могу ли я таким образом изменить уже записанные данные об элементе? Ну, например, сделать ворота подвижными (менять их положение) или спрятать бота, переместив его в другое измерение. Заранее спасибо. Link to comment
Kenix Posted December 16, 2015 Share Posted December 16, 2015 Edf https://wiki.multitheftauto.com/index.ph ... Editor/EDF Link to comment
K1parik Posted February 9, 2016 Share Posted February 9, 2016 подскажите есть где мануальчики на русском по engineApplyShaderToWorldTexture ? есть желание наложить на тень под транспортом разноцветные текстурки типа неон и все такое, но ничего не понятно. есть где можно про это почитать или может кто накидает пример с комментариями? Link to comment
Jonathan.P Posted February 17, 2016 Share Posted February 17, 2016 Привет. Есть некоторый отрезок(ось) в пространстве. Даны его начало, конец и повороты(на самом деле это ось обьекта, и есть его матрица). Нужно определить длину расстояния между центром отрезка и положением курсора на этом отрезке. В общем нужно спроецировать курсор на эту ось. Как решить? Link to comment
Jonathan.P Posted February 18, 2016 Share Posted February 18, 2016 Хочу реализовать интерфейс перемещения обьекта мышкой. Возможно уже есть готовый ресурс, где можно глянуть реализацию? Link to comment
KatastrofaS Posted February 22, 2016 Share Posted February 22, 2016 2 MMK_033 Слабо разбираюсь в Lua, но данные из карты в скрипт перебрасываю следующим образом. Интересным мне объектам в карте добавляю свой параметр. Напеример, animat. Строчка для педа может выглядеть так: <ped id="ped (1)" model="281" animat="1" posX="2491.7" posY="-1667.5" posZ="13.34" rotX="0" rotY="0" rotZ="0" /> Теперь переходим к скрипту. Например, в файл серверного скрипта прописываю такое: local peds = {} -- задать ёмкость (простите мой Lua) addEventHandler("onResourceStart",resourceRoot, function() peds = getElementsByType("ped") -- прочитать людей из карты .map setTimer(function() for i, object in ipairs(peds) do -- сканировать все записи про людей local anim = getElementData(object,"animat") -- на предмет наличия параметра animat -- и выполнить действия согласно разнарядке if anim == "1" then setPedRotation(object,150) setPedAnimation(object,"PAULNMAC","PnM_Argue2_A",-1,true,true,false) elseif anim == "2" then setPedRotation(object,270) setPedAnimation(object,"DANCING","dance_loop",-1,true,true,true) elseif anim == "3" then setPedRotation(object,180) setPedAnimation(object,"DANCING","dnce_M_b",-1,true,true,true) end end end,4000,1) end) Link to comment
Jonathan.P Posted February 28, 2016 Share Posted February 28, 2016 Вопрос о производительности. В дефолтной базе есть таблица с примерно 4000 записей. Сильно ли я сэкономлю ресурсы сервера если из 36 колонок 9 я объединю в одну с помощью JSON'а? Link to comment
Kernell Posted February 28, 2016 Share Posted February 28, 2016 Вопрос о производительности. В дефолтной базе есть таблица с примерно 4000 записей. Сильно ли я сэкономлю ресурсы сервера если из 36 колонок 9 я объединю в одну с помощью JSON'а? Скорее наоборот. Вообще зависит что за типы столбцов хотя бы. Если ты, например, объединишь 9 голонок smallint в JSON то от этого только хуже будет, потому что хранить ты их будешь в виде строки, например длиной 255 символов, что явно больше, да и выборка по этим ключам усложнит запрос. Оптимизировать БД ты можешь разве что изменив тип данных на более лёгкий, к примеру если в поле хранится число от 0 до 4, то явно обычного int ему будет много. В некоторых случаях будет лучше использовать enum или set, так как они работают на уровне битовой маски. P.S. Да и вообще что за база? Если MySQL\PostgreSQL то всё это имеет смысл Link to comment
Jonathan.P Posted February 29, 2016 Share Posted February 29, 2016 Вообще зависит что за типы столбцов хотя бы.P.S. Да и вообще что за база? Если MySQL\PostgreSQL то всё это имеет смысл Стандартная база SQL (executeSQLQuery). Данные типа numeric, точнее double(несколько хэндлинг-настроек). Хотелось бы понять как повлияет на базу выборочные запросы нескольких столбцов, или всех сразу. Как я понял существенно скорость работы с базой не изменится? Link to comment
McFree Posted April 5, 2016 Share Posted April 5, 2016 function loginHandler(username,password) if source then dbQuery( function(qh) -- результат в переменную result local result = dbPoll( qh, -1, true ) --если result имеет в себе что-то if result then --считать колонки for column, value in pairs ( result ) do DBInf.DBuser = value["Username"] DBInf.DBpass = value["Password"] DBInf.DBuserID = value["UserID"] end end -- проверяем username и password на правильность if (tostring(DBInf.DBuser) == tostring(username)) and (tostring(DBInf.DBpass) == tostring(password)) then -- игрок успешно залогинился, переходим к выбору персонажа triggerClientEvent("ChangeCharacters", getRootElement(), DBInf.DBuserID) else -- если username или password неправильны, выводим игроку соответствующее сообщение triggerClientEvent("AuthERROR", getRootElement(), "Не верный Username или Password @2" ) triggerClientEvent("AuthView", getRootElement() ) end end, SQL, "SELECT * FROM accounts WHERE Username= ? and Password = ?", username, password ) end end triggerClientEvent выводит всем игрокам на сервере. Как можно сделать так чтобы выводило лишь тому кто отправил запрос на функцию loginHandler? Link to comment
Kenix Posted April 5, 2016 Share Posted April 5, 2016 https://wiki.multitheftauto.com/wiki/TriggerClientEvent sendTo: The event will be sent to all players that are children of the specified element. By default this is the root element, and hence the event is sent to all players. If you specify a single player it will just be sent to that player. This argument can also be a table of player elements. + sourceElement: The element that is the source of the event. На вики же все написано. Link to comment
Kenix Posted April 5, 2016 Share Posted April 5, 2016 https://wiki.multitheftauto.com/wiki/TriggerClientEvent sendTo: The event will be sent to all players that are children of the specified element. By default this is the root element, and hence the event is sent to all players. If you specify a single player it will just be sent to that player. This argument can also be a table of player elements. + sourceElement: The element that is the source of the event. На вики же все написано. Link to comment
McFree Posted April 5, 2016 Share Posted April 5, 2016 Как сменить педу скин? пробую так - без результатов killPed(CPad) ThisSkin = ThisSkin-1 CPad = createPed( StartSkinsW.ThisSkin, 1339, -1817, 14 , 230) Link to comment
McFree Posted April 5, 2016 Share Posted April 5, 2016 Как сменить педу скин? пробую так - без результатов killPed(CPad) ThisSkin = ThisSkin-1 CPad = createPed( StartSkinsW.ThisSkin, 1339, -1817, 14 , 230) Link to comment
TheNormalnij Posted April 6, 2016 Share Posted April 6, 2016 StartSkinsW[ThisSkin] Сделайте проверки на валидность ид. Link to comment
TheNormalnij Posted April 6, 2016 Share Posted April 6, 2016 StartSkinsW[ThisSkin] Сделайте проверки на валидность ид. Link to comment
McFree Posted April 6, 2016 Share Posted April 6, 2016 StartSkinsW[ThisSkin] Сделайте проверки на валидность ид. Туплю, что такое валидность? Link to comment
McFree Posted April 6, 2016 Share Posted April 6, 2016 StartSkinsW[ThisSkin] Сделайте проверки на валидность ид. Туплю, что такое валидность? Link to comment
rovied Posted April 8, 2016 Share Posted April 8, 2016 Нажимаю на форму ввода (в любое место, даже на заголовок окна) т.е. не на кнопку, а событие onClientGUIClick все равно срабатывает. Как это отключить? Решил проблему установив параметр getPropagated = false функции addEventHandler() addEventHandler("onClientGUIClick", GUILogin.button[1], onClickBtnLogin, false) было addEventHandler("onClientGUIClick", GUILogin.button[1], onClickBtnLogin) 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