Jump to content

Kenix

Retired Staff
  • Posts

    4,121
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Kenix

  1. Хочу в целом поддержать сервера от PCP Gaming, хороший геймплей и качественные карты. Сам начал играть там впервые, когда познакомился с МТА (2009 год). Поражало на тот момент времени качество маппинга (и сейчас поражает), сервер назывался PCP Gaming Stealth. Также спустя много лет поиграл на PCP Bomb Da Base, также остались приятные впечатления.
  2. Возможно это может быть связано с тем, что у игроков медленный HDD и при вызове функции отрисовки, MTA просто не успевает прочитать такой большой файл за 1 кадр и отрисовать его. Поэтому я бы вам посоветовал использовать функцию dxCreateTexture, чтобы создать текстуру один раз и её рисовать сколько угодно, благо она уже будет в памяти и доступ к ней будет быстрым, в отличии от HDD.
  3. Тоже хотелось бы разобраться, но нужно все понять. 1) Речь идет обо всех серверах или о конкретном? Были ли тесты на локальном сервере? 2) Версия МТА клиента? Возможно какой-то коммит уже исправил эти утечки памяти. 3) МТА загружает все модели в память, идет нагрузка на ОЗУ, но думаю стоит провести тесты с заменой объектов/машин/игроков (кол-во замененных dff, txd, col, а также тип замены), чтобы понять где именно есть эти утечки, может быть dff подгружается без выделения ненужной памяти, а col наоборот, либо это все зависит от дополнительных свойств модели (свойства коллизии либо ещё что-то). Если эти данные все подробно собрать, то можно создать большой инцидент на баг трекере и привлечь к этому внимание.
  4. Отрисовку нужно делать после вызова события onClientResourceStart (вызывается при старте ресурса на клиенте, загрузки всех файлов и скриптов). Потом уже добавлять обработчик addEventHandler для рендера. А вообще нужно код смотреть, который вы не предоставили.
  5. Вы используете не ту функцию, dbExec не возвращает результат в виде таблицы, она только делает запрос. Чтобы получить значения полей используйте функции dbQuery + dbPoll. Я советую почитать вот эти уроки, чтобы понимать как работать с MySQL/SQLite в MTA:
  6. Можно привязать метаметод __newindex / __index, чтобы после его вызова срабатывал set/getElementData как вариант. А так вообще ты можешь передавать поля, кроме: функций, корутинов и элементов, которые не могут быть поддержаны на другой стороне клиента / сервера. Советую почитать также:
  7. Используйте библиотеку классов от sbx320. GitHub: https://github.com/sbx320/lua_utils Документация: https://github.com/sbx320/lua_utils/wiki/classlib Пример реализации того, что вам нужно. https://github.com/sbx320/lua_utils/wiki/registerElementClass
  8. Можешь написать свой стример на клиенте, который бы проверял позицию и если позиция пикапа дальше %ЗНАЧЕНИЕ%, то используешь функцию setElementDimension и отправляешь в какое то особое измерение, а если дистанция меньше, то в текущее измерение, в котором находится игрок.
  9. getElementType - Для тех, кто ищет ответ.
  10. Сервер это уже и так делает, чтобы получить все элементы, которые тебе нужно используй функцию getElementsByType в купе с getElementPosition (если хочешь получить позицию элемента), также у этой функции есть дополнительный аргумент, который возвращает элементы, которые находятся в стриме (это те елементы, которые видит игрок - зона примерная в 250м, остальные элементы уже не будут в стриме)
  11. Sorry, too fast. For unstable version problem is not resolved.
  12. I'm using net.dll from nightly build, but i have this error everytime. Client works perfectly, but i can't run the server.
  13. Which client version i need select for private server(s)? (I mean custom/unstable/... ) I have done some checks: (1.5.3-10739) Client (Release) -> Server (Release) - If i will change something in MTA, MTA will check it on start (dll lib version). Lib version is not generated by compiler (?) Client (Custom) -> Server (Custom) - Other players can't join. Client (Unstable) -> Server (Unstable) - Everytime i have this error msg when i started the server.
  14. Тут надо смотреть по ситуации. Если ты делаешь логин или регистрацию, то сначала ты создаешь окно на клиенте, а потом уже вызываешь событие на сервере, которое тебе необходимо (логин, регистрация аккаунта в базе и т.д), после того, как все прошло успешно удаляешь окно. Я правильно понял, что ты делаешь окно авторизации?
  15. Ты вызываешь тригер с сервера на клиент, когда клиент ещё не готов. Именно по этому у тебя и нет вызова. Тебе нужно использовать onClientResourceStart на клиенте и потом уже делать все что тебе нужно.
  16. Из VDS могу предложить: Cishost, Ruweb
  17. Okay, i will parse it.
  18. This is maybe a stupid question but maybe some one have a traffic objects map? or where it can be parsed? I have checkout an IDE, IPL files from original GTA:SA game, but i didn't found where it can be defined (dynamic traffic object with positon and rotation, i guess it maybe stored in gta3.img, right?). local aObjectIDs = { 3855; -- GAY_TRAFFIC_LIGHT 1262; -- MTraffic4 mitraffic 1263; -- MTraffic3 mitraffic 1283; -- MTraffic1 mitraffic 1284; -- MTraffic2 mitraffic 1315; -- trafficlight1 1350; -- CJ_TRAFFIC_LIGHT4 CJ_traffic 1351; -- CJ_TRAFFIC_LIGHT5 CJ_traffic 1352; -- CJ_TRAFFIC_LIGHT3 CJ_traffic }; I want to make a workaround to fix this issue: https://bugs.mtasa.com/view.php?id=9387 I Need check if vehicle near the traffic object and get object rotation.
  19. Нужно уметь пользоваться поиском. Пример с больницами
  20. Человек требовал ответ на вопрос, что быстрее, я и ответил. Тестирование проводилось на локальном сервере. Зачем мне проверять задержку в сети? >> в то время как SetElementData регистрирует объект (для дальнейшей синхронизации) и рассылает пакеты данных всем игрокам. Во первых setElementData сначала смотрит, изменилась ли элемент дата (если она не изменилась то и синхронизации не будет), потом уже идет регистрация объекта и синхронизация для каждого клиента. Докапываться до человека не очень культурно, на заметку.
  21. https://forum.multitheftauto.com/topic/34355-как-лучше-всего-выложить-код/
  22. triggerClientEvent быстрее и имеет более высокий приоритет. Я проводил тесты, пробовал вызывать сначала triggerClientEvent, затем setElementData и наоборот, потом сравнивал кто быстрее. -- Server addEvent( "onPlayerReady", true ); addEventHandler( "onPlayerReady", root, function() local sValue = ( "*" ):rep( math.random( 5000000, 10000000 ) ); setElementData( source, "Test", sValue ); triggerClientEvent( source, "onClientPlayerRecived", source, sValue ); end ); -- Client addEvent( "onClientPlayerRecived", true ); local iTick = getTickCount(); addEventHandler( "onClientResourceStart", resourceRoot, function() triggerServerEvent( "onPlayerReady", localPlayer ); end ); addEventHandler( "onClientPlayerRecived", root, function() outputChatBox( "Time: " .. tostring( getTickCount() - iTick ) .. "ms" ); end ); addEventHandler( "onClientElementDataChange", root, function( sData ) if sData == "Test" then outputChatBox( "Time2: " .. tostring( getTickCount() - iTick ) .. "ms" ); end end ); --[[ При использовании triggerClientEvent. Time: 6843ms При использовании setElementData Time2: 8626ms ]]
×
×
  • Create New...