Jump to content

Вопросы и ответы по MTA.


Recommended Posts

-

Кстати, о потоках. Обработчики и каллбеки функций (db, http) всегда же в главном потоке выполняются, даже если вызовы типа callRemote, addEventHandler производились из корутины?

Link to comment

У меня возникло пару вопросов на счет mysql через dbConnect, вот и они:

1) Можно ли как-то коннектится к базе в одном ресурсе и использовать его для всех остальных ресурсов или на каждый ресурс свой коннект, и как будет эффективнее?

2) https://wiki.multitheftauto.com/wiki/ExecuteSQLQuery - откуда функция берет коннект к какой-то бд и какая её разница с https://wiki.multitheftauto.com/wiki/DbQuery?

3) https://wiki.multitheftauto.com/wiki/DbFree нужно чтобы обнулить результат с dbQuery, а https://wiki.multitheftauto.com/wiki/DbPoll возвращает результат с dbQuery?

4) В dbQuery есть каллбек, это просто вызывание функции когда будет готов результат запроса?

5) Я раньше использовал модуль, какие особенности в использование?

Заранее спасибо.

Link to comment
У меня возникло пару вопросов на счет mysql через dbConnect, вот и они:

1) Можно ли как-то коннектится к базе в одном ресурсе и использовать его для всех остальных ресурсов или на каждый ресурс свой коннект, и как будет эффективнее?

2) https://wiki.multitheftauto.com/wiki/ExecuteSQLQuery - откуда функция берет коннект к какой-то бд и какая её разница с https://wiki.multitheftauto.com/wiki/DbQuery?

3) https://wiki.multitheftauto.com/wiki/DbFree нужно чтобы обнулить результат с dbQuery, а https://wiki.multitheftauto.com/wiki/DbPoll возвращает результат с dbQuery?

4) В dbQuery есть каллбек, это просто вызывание функции когда будет готов результат запроса?

5) Я раньше использовал модуль, какие особенности в использование?

Заранее спасибо.

1) Да, через экспорты.

2) executeSQLQuery - Функция для работы со стандартной базой данных (registry.db). dbQuery - работает со всеми базами (смотря куда ты подключился - dbConnect).

3) Да

4) Да

5) Всё реализовано в паре функций вместо кучи, если используешь каллбек, то сервер не будет ждать ответа на запрос, разработчики обновляют/улучшают все встроенные функции, (а модуль никто не обновляет).

Есть пару ключевых моментов.

1) Если тебе нужно сделать запрос результат которого тебе не нужен (например обновить поля таблицы через оператор UPDATE или добавить через оператор INSERT и т.д ), то используй dbExec, тебе не нужно будет освобождать память для dbQuery.

2) Если делать запрос с выборкой без каллбека, а в аргументе dbPoll (ождиание) указать 0, то сервер не будет ждать и сразу будет получать данные от запроса, который ещё не пришел. Это глупое решение. Самый оптимальный вариант либо указывать у функции dbQuery каллбек, либо же указывать в функции dbPoll аргумент ожидания (- 1) - означает, что сервер будет ждать пока не придет запрос.

Также всё это уже писалось в этом уроке да и вообще на форуме есть куча тем.

https://forum.multitheftauto.com/viewtopic.php?f=153&t=37482

Link to comment
  • Other Languages Moderators

5) Всё реализовано в паре функций вместо кучи, если используешь каллбек, то сервер не будет ждать ответа на запрос, разработчики обновляют/улучшают все встроенные функции, (а модуль никто не обновляет).

Экранирование строк сделано проще и удобнее.

Link to comment

Народ, такое дело. В общем, как можно решить проблему отображения замененных моделей? Суть в том, что мне требуется поставить один большой объект в X:-5000, Y:-5000, а наблюдать его в X:5000, Y:5000,

  
setLowLODElement 
engineSetModelLODDistance 
setFarClipDistance 
  

Улучшают ситуацию, но этого не хватает.

Link to comment

Kenix, Эх, спасибо) Так и думал, что все к DX сведется)

UPD: Тут даже DX-функции не помогают. Объект все равно пропадает при отдалении, причем чем больше объект, тем быстрее. Если объект маленький, то он нормально уменьшается, пока не исчезнет вовсе, если большой (что мне и требуется), то стоит отойти метров на 500 и он начинает пропадать.

UPD: Решено.

Edited by Guest
Link to comment

Всем доброго время суток, у меня вопрос на счет клиента/сервера, как я знаю клиент для графических возможностей, но например есть и то что на нем нельзя делать, что? Тот же вопрос на счет сервера, а то я запутался, с тем что делать на сервере, а что на клиенте, например в системе инвентаря функцию есть ли в игрока место для предмета/дать предмет/удалить предмет, это все надо делать на сервере?

Link to comment
Всем доброго время суток, у меня вопрос на счет клиента/сервера, как я знаю клиент для графических возможностей, но например есть и то что на нем нельзя делать, что?

Странный вопрос. Много чего нельзя делать на клиенте. Это нельзя как-то описать одним словом.

Тот же вопрос на счет сервера, а то я запутался, с тем что делать на сервере, а что на клиенте, например в системе инвентаря функцию есть ли в игрока место для предмета/дать предмет/удалить предмет, это все надо делать на сервере?

Где сделаешь - там и будет.

Если делать на сервере, то будет лучше защита, но больше нагрузка на сервер, на клиенте же - защита хуже, нагрузка меньше(ну, это еще как сделать).

Link to comment
Всем доброго время суток, у меня вопрос на счет клиента/сервера, как я знаю клиент для графических возможностей, но например есть и то что на нем нельзя делать, что?

Странный вопрос. Много чего нельзя делать на клиенте. Это нельзя как-то описать одним словом.

Тот же вопрос на счет сервера, а то я запутался, с тем что делать на сервере, а что на клиенте, например в системе инвентаря функцию есть ли в игрока место для предмета/дать предмет/удалить предмет, это все надо делать на сервере?

Где сделаешь - там и будет.

Если делать на сервере, то будет лучше защита, но больше нагрузка на сервер, на клиенте же - защита хуже, нагрузка меньше(ну, это еще как сделать).

А вообще на счет защиты клиента, не буду спрашивать как её взламывают, но спрошу как защитится от взлома?

Link to comment
  • 3 weeks later...

6. Avoid “ipairs()”

When iterating through a table, the overhead of the Lua ipairs() function does not justify its use, especially when you can accomplish the same thing using a Lua construct.

ipairs() — Discouraged

local t1 = {}

local t2 = {}

local t3 = {}

local t4 = {}

local a = { t1, t2, t3, t4 }

for i,v in ipairs( a ) do

print( i,v )

end

Lua Construct — Recommended

local t1 = {}

local t2 = {}

local t3 = {}

local t4 = {}

local a = { t1, t2, t3, t4 }

for i = 1,#a do

print( a )

end

Источник http://coronalabs.com/blog/2013/03/12/performance-optimizations/

Link to comment

Так же привел простой тест

  
local data = { 
    values = {} 
} 
  
for i = 1, 10000 do 
    table.insert(data.values, i) 
end 
  
function simpleForTest() 
    local j 
    local t = getTickCount() 
  
    for k = 1, 100 do 
        for i = 1, #data.values do 
            j = data.values[i] 
        end 
    end 
  
    outputServerLog('~~~# '..getTickCount() - t) 
end 
  
function pairsTest() 
    local j 
    local t = getTickCount() 
  
    for k = 1, 100 do 
        for i, val in pairs(data.values) do 
            j = val 
        end 
    end 
  
    outputServerLog('~~~pairs '..getTickCount() - t) 
end 
  
function ipairsTest() 
    local j 
    local t = getTickCount() 
  
    for k = 1, 100 do 
        for i, val in ipairs(data.values) do 
            j = val 
        end 
    end 
  
    outputServerLog('~~~ipairs '..getTickCount() - t) 
end 
  
for i = 1, 10 do 
    simpleForTest() 
    pairsTest() 
    ipairsTest() 
end 
  

  
~~~# 147.99999999988 
~~~pairs 223.99999999988 
~~~ipairs 242 
~~~# 163.00000000012 
~~~pairs 226.99999999988 
~~~ipairs 240 
~~~# 152.00000000012 
~~~pairs 222.99999999988 
~~~ipairs 237 
~~~# 148 
~~~pairs 223 
~~~ipairs 236 
~~~# 148 
~~~pairs 223 
~~~ipairs 237 
~~~# 150 
~~~pairs 221 
~~~ipairs 235.00000000012 
~~~# 149 
~~~pairs 222 
~~~ipairs 239 
~~~# 150 
~~~pairs 222.00000000012 
~~~ipairs 236.99999999988 
  

То есть «некрасивый» код работает в два раза быстрее «красивого». Вот так.

Link to comment

Всем привет, у меня вопрос на счет изменение частей текстуры интерьера, вот так как это сделано здесь: http://youtu.be/5Q4aaxJZIxk?t=6m3s

С помощью чего это возможно воплотить? Если уж в сампе это сделали, так в МТА это точно возможно.

Link to comment
Всем привет, у меня вопрос на счет изменение частей текстуры интерьера, вот так как это сделано здесь: http://youtu.be/5Q4aaxJZIxk?t=6m3s

С помощью чего это возможно воплотить? Если уж в сампе это сделали, так в МТА это точно возможно.

https://wiki.multitheftauto.com/wiki/EngineApplyShaderToWorldTexture

Link to comment

Есть ли где-то... тема о шейдерах?

Сколько я не пытался понять их в Вики, то никак не может мой мозг это осознать. Может быть у кого-то есть ссылочка где можно почитать о них, только в более опрощенном варианте. А если на русском, то вообще супер.

Link to comment
Есть ли где-то... тема о шейдерах?

Сколько я не пытался понять их в Вики, то никак не может мой мозг это осознать. Может быть у кого-то есть ссылочка где можно почитать о них, только в более опрощенном варианте. А если на русском, то вообще супер.

Аналогичный вопрос, с вики ничего не понять, ну разве что учиться по примерах https://wiki.multitheftauto.com/wiki/Shader_examples

Link to comment
Есть ли где-то... тема о шейдерах?

Сколько я не пытался понять их в Вики, то никак не может мой мозг это осознать. Может быть у кого-то есть ссылочка где можно почитать о них, только в более опрощенном варианте. А если на русском, то вообще супер.

http://lmgtfy.com/?q=hlsl+programming

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...