K1parik Posted October 25, 2016 Share Posted October 25, 2016 29 minutes ago, Kernell said: На сервере МТА выполнить команду openports, она протестирует порты два udp и один tcp. все открыты Link to comment
Easterdie Posted October 26, 2016 Share Posted October 26, 2016 (edited) возникла внезапная проблема, хочется решение без костылей. сидя в транспорте закрываю машину через setVehicleLocked(veh, true) пытаюсь сесть в неё снаружи, но кроме активного подёргивания ручками за дверь более ничего не происходит. функция onPlayerVehicleEnter срабатывает исключительно посадке задницы педа в транспорт. проверка такого вида выдаёт ничего: function vehicleLockState(veh, seat, jacked) outputChatBox(getPlayerName(source)) end addEventHandler("onPlayerVehicleEnter", root, vehicleLockState) собственно, как побороть проблему без задействования колшейпов? Edited October 26, 2016 by Easterdie Link to comment
LoveFist Posted October 26, 2016 Share Posted October 26, 2016 @Easterdie используй другое событие - https://wiki.multitheftauto.com/wiki/OnVehicleStartEnter @K1parik проблема может быть не в сервере, а в хостинге на котором запущен php скрипт. На хостинге может быть запрещено использовать fsockopen или также закрыты порты. 1 Link to comment
K1parik Posted October 26, 2016 Share Posted October 26, 2016 5 hours ago, LoveFist said: проблема может быть не в сервере, а в хостинге на котором запущен php скрипт. На хостинге может быть запрещено использовать fsockopen или также закрыты порты. а какие порты нужны? Link to comment
Misha_Konsta Posted October 26, 2016 Share Posted October 26, 2016 11 minutes ago, K1parik said: а какие порты нужны? Порт, через который скрипт подключается к серверу. Насколько я знаю, который указавается в <httpport> (по дефолту 22005) Большая часть хостингов закрывает порты, но при обращении в тп, обычно открывают необходимый порт 1 Link to comment
K1parik Posted October 26, 2016 Share Posted October 26, 2016 4 minutes ago, Misha_Konsta said: Порт, через который скрипт подключается к серверу. Насколько я знаю, который указавается в <httpport> (по дефолту 22005) Большая часть хостингов закрывает порты, но при обращении в тп, обычно открывают необходимый порт нужно открыть порт на сайте такой же к которому нужно подключиться на сервере? спасибо за информацию Link to comment
Misha_Konsta Posted October 26, 2016 Share Posted October 26, 2016 1 minute ago, K1parik said: нужно открыть порт на сайте такой же к которому нужно подключиться на сервере? спасибо за информацию Да, то есть скрипт пытается подключиться по порту http (сервера), а хостинг не дает этого сделать, потому что закрыл практически все порты в целях безопасности, по запросу порт откроют без проблем. Помню забавный случай, когда я только тестировал работу движка мониторинга, было очень давно, он не мог получать информацию о серверах, так как хостинг по умолчанию закрыл все порты. Я деликатно обратился в тех.поддержку, с просьбой открыть порты. Они меня спрашивают - "А какие порты вам нужно открыть?", а я им - "Все", они чуть в обморок не упали Link to comment
N1kS Posted November 8, 2016 Share Posted November 8, 2016 (edited) Для получения информации от сервера используется UDP ASE порт, по стандарту он игровой+123, то есть если игровой 22003, то ASE порт 22126. Спецификацию ASE порта можно найти тут: https://github.com/multitheftauto/mtasa-blue/blob/master/Server/mods/deathmatch/logic/ASE.cpp#L246-L341 Edited November 8, 2016 by N1kS 2 Link to comment
GodOfPenguins Posted December 11, 2016 Share Posted December 11, 2016 Как сделать проверку на ID транспорта при въезде на маркер? Т.е. например, чтобы второй маркер создавался только, если въехать на первый маркер на транспорте с определённым ID (В моём случае 577). Link to comment
K1parik Posted December 14, 2016 Share Posted December 14, 2016 Ребята, нужна помощь. Задача следующая: нужно записать логин игрока и через 30 дней эту запись автоматически удалить. Как это лучше реализовать? Записей таких будет не много так, что в принципе можно использовать xml файл наверно? Link to comment
TheNormalnij Posted December 14, 2016 Share Posted December 14, 2016 Почему бы и нет, если операции записи/чтения будут происходить редко. Хотя реализация через MySQL/SQLLite пишется быстрее и легче расширяема. 1 Link to comment
K1parik Posted December 14, 2016 Share Posted December 14, 2016 там пару записей в день например. проблема как лучше сделать это удаление через 30 дней Link to comment
Other Languages Moderators Disinterpreter Posted December 16, 2016 Other Languages Moderators Share Posted December 16, 2016 On 14.12.2016 at 11:13 PM, K1parik said: там пару записей в день например. проблема как лучше сделать это удаление через 30 дней https://www.sitepoint.com/how-to-create-mysql-events/ Например так. Попробуй поискать реализации в SQLite. 1 Link to comment
Jonathan.P Posted December 16, 2016 Share Posted December 16, 2016 Есть у меня один постоянный шейдер, который я применяю к элементам при определенных обстоятельствах и при входе элемента в стрим. Если элемент выходит из стрима, то обязательно ли отменять шейдер функцией engineRemoveShaderFromWorldTexture? Link to comment
K1parik Posted January 12, 2017 Share Posted January 12, 2017 (edited) Привет, уважаемые. У меня с математикой все плохо и нужна ваша помощь. Если не сложно, напишите функцию которая будет высчитывать угол между направлением автомобиля и направлением его движения (как на картинке) Edited January 12, 2017 by K1parik Link to comment
Fabervox Posted January 13, 2017 Share Posted January 13, 2017 (edited) @K1parik, дык из большего градуса вычесть меньший)) Направление движения, можно просто получать 2 позиции и считать как треугольник, расстояние между точками - гипотенуза, отклонения по осям от первой точки - катеты, угол между ними 90, так что считать несложно. Это че дрифт что-ли? Edited January 13, 2017 by fabervox Link to comment
K1parik Posted January 13, 2017 Share Posted January 13, 2017 яяяяяясненько придется обойтись без этого. нет это не дрифт. просто хотел устанавливать поворот колес в зависимости от угла Link to comment
TheNormalnij Posted January 13, 2017 Share Posted January 13, 2017 local vRotation = vehicle:getRotation( ) local vVelocity = vehicle:getVelocity( ) --local speed = ( vVelocity.x^2 + vVelocity.y^2 + vVelocity.z^2 ) ^ 0.5 local rZ = math.atan2( vVelocity.x, vVelocity.y ) rZ = rZ < 0 and -rZ or 2 * Pi - rZ local vRotZ = math.rad( vRotation.z ) local yourAngle = math.abs( rZ - vRotZ ) -- На этом можно было бы остановиться, но далее был код, который неизвестно за что отвечает if yourAngle > Pi -0.1 then if rZ > Pi and vRotZ > 0 and vRotZ < Pi then yourAngle = Pi * 2 - rZ + vRotZ; elseif rZ < Pi and rZ > 0 and vRotZ > Pi and vRotZ < Pi * 2 then yourAngle = ( Pi * 2 - vRotZ ) + rZ; end end Типо того, но скорее всего тебе math.abs не понадобится. Link to comment
Jonathan.P Posted January 17, 2017 Share Posted January 17, 2017 Дайте пару советов, как сделать кустомный GUI. И если есть, порекомендуйте пожалуйста ресурсы на эту тему. Link to comment
AfterAll14 Posted January 17, 2017 Share Posted January 17, 2017 https://wiki.multitheftauto.com/wiki/Resource:DxGUI Хотя пока ни одного GUI не видел чтобы мог сравниться по функционалу со встроенными МТА функциями. У этого, насколько помню, нету списков (gridlists). Link to comment
Other Languages Moderators Disinterpreter Posted January 17, 2017 Other Languages Moderators Share Posted January 17, 2017 https://github.com/Jusonex/mtasa_cef_tools Тут тоже можно вдохновиться. Link to comment
Elengar Posted January 18, 2017 Share Posted January 18, 2017 Можно ли как-нибудь обнаружить появление network trouble? Link to comment
GodOfPenguins Posted January 23, 2017 Share Posted January 23, 2017 (edited) Выдаёт ошибку, что второй аргумент (кнопки) "got nil". Кнопка естественно не работает. Работающие решение проблемы так и не нашёл. addEventHandler("onClientGUIClick", button[1], function() local log, pass = guiGetText(edit[1]), guiGetText(edit[2]) if(log == "") or (pass == "") then outputChatBox("Не заполнено одно из полей!") else triggerServerEvent("ClientLogin", getLocalPlayer(), log, pass) end end, false) Сам GUI: local window = {} local tabpanel = {} local tab = {} local edit = {} local label = {} local button = {} addEventHandler("onClientResourceStart", getResourceRootElement(), function() window[1] = guiCreateWindow(0.27, 0.29, 0.45, 0.41, "Авторизация", true) guiWindowSetSizable(window[1], false) tabpanel[1] = guiCreateTabPanel(0.02, 0.04, 0.97, 0.93, true, window[1]) tab[1] = guiCreateTab("Авторизация", tabpanel[1]) edit[1] = guiCreateEdit(173, 92, 209, 20, "", false, tab[1]) edit[2] = guiCreateEdit(174, 138, 208, 20, "", false, tab[1]) label[1] = guiCreateLabel(183, 11, 189, 32, "Введите данные своего аккаунта", false, tab[1]) label[2] = guiCreateLabel(79, 96, 84, 16, "Имя_Фамилия:", false, tab[1]) label[3] = guiCreateLabel(79, 140, 84, 18, "Пароль:", false, tab[1]) button[1] = guiCreateButton(205, 197, 152, 42, "Войти!", false, tab[1]) tab[2] = guiCreateTab("Регистрация", tabpanel[1]) end ) Edited January 23, 2017 by Taka Link to comment
TheNormalnij Posted January 23, 2017 Share Posted January 23, 2017 (edited) Наверняка, когда вы добавляете обработчкик событий, кнопки еще не существует. Уберите 8-9 и 25-26 строки, или сделайте как ниже. Spoiler local window = {} local tabpanel = {} local tab = {} local edit = {} local label = {} local button = {} addEventHandler("onClientResourceStart", getResourceRootElement(), function() window[1] = guiCreateWindow(0.27, 0.29, 0.45, 0.41, "Авторизация", true) guiWindowSetSizable(window[1], false) tabpanel[1] = guiCreateTabPanel(0.02, 0.04, 0.97, 0.93, true, window[1]) tab[1] = guiCreateTab("Авторизация", tabpanel[1]) edit[1] = guiCreateEdit(173, 92, 209, 20, "", false, tab[1]) edit[2] = guiCreateEdit(174, 138, 208, 20, "", false, tab[1]) label[1] = guiCreateLabel(183, 11, 189, 32, "Введите данные своего аккаунта", false, tab[1]) label[2] = guiCreateLabel(79, 96, 84, 16, "Имя_Фамилия:", false, tab[1]) label[3] = guiCreateLabel(79, 140, 84, 18, "Пароль:", false, tab[1]) button[1] = guiCreateButton(205, 197, 152, 42, "Войти!", false, tab[1]) addEventHandler("onClientGUIClick", button[1], function() local log, pass = guiGetText(edit[1]), guiGetText(edit[2]) if(log == "") or (pass == "") then outputChatBox("Не заполнено одно из полей!") else triggerServerEvent("ClientLogin", getLocalPlayer(), log, pass) end end, false) tab[2] = guiCreateTab("Регистрация", tabpanel[1]) end ) Edited January 23, 2017 by TheNormalnij 1 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