Jump to content

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


Recommended Posts

Ты прекрепляешь педа к камере, а нужно наоборот.

Нет, как раз таки все правильно. :D

Извините за оффтоп, но меня разбирает любопытство, - зачем? Сам как-то ничего не придумал.. :oops:

Link to comment
Извините за оффтоп, но меня разбирает любопытство, - зачем? Сам как-то ничего не придумал.. :oops:

В сампе есть така функция что выводит модель/объекты и т.п. на екран, без загрузки изображений, вот пытаюсь сделать что-то подобное.

Link to comment
Извините за оффтоп, но меня разбирает любопытство, - зачем? Сам как-то ничего не придумал.. :oops:

В сампе есть така функция что выводит модель/объекты и т.п. на екран, без загрузки изображений, вот пытаюсь сделать что-то подобное.

https://bugs.mtasa.com/view.php?id=8769

Link to comment

Снова я.

WARNING: MTADayZ\inventory_s.lua:125: Bad argument @ 'dbQuery' [Expected db-connection at argument 1, got nil] 

Пытаюсь получить от базы ответ, а она ни в какую. Да и строки не добавляются в таблицу инвентаря. В чем может быть проблема?

Клиент:

  
function refreshInventory () 
        local items = getElementsByType("item") 
        for i,item in ipairs(items) do 
            if getElementData ( item, "item_owner") = localPlayer then 
                guiGridListSetItemText(GUIEditor.gridlist[index], 0, 1, items[getElementData ( item, "item_id")][1], false, false) 
                guiGridListSetItemText(GUIEditor.gridlist[index], 0, 2, getElementData ( item, "item_amount"), false, false) 
                guiGridListSetItemText(GUIEditor.gridlist[index], 0, 3, items[getElementData ( item, "item_id")][2], false, false) 
            end 
        end 
end 
  
function showInventory () 
        outputChatBox ( "Открытие инвентаря")         
        if ( guiGetVisible ( GUIEditor.window[1] ) == true ) then 
                guiSetVisible ( GUIEditor.window[1], false ) 
                showCursor(false)   
        else             
                guiSetVisible ( GUIEditor.window[1], true ) 
  
                showCursor(true)   
                refreshInventory() 
        end 
end 
  

Сервер:

  
local inventoryDataBase 
  
function connectDB ( ) 
    inventoryDataBase = dbConnect( "sqlite", "inventory.db" ) 
    dbQuery( inventoryDataBase, "CREATE TABLE IF NOT EXISTS `items` (`id` INTEGER, `owner` TEXT, `amount` INTEGER)") 
end 
addEventHandler ( "onResourceStart", getRootElement(), connectDB ) 
  
function loginHandler() 
    dbQuery( callbackInv, inventoryDataBase, "SELECT * FROM items WHERE owner = ?", source) 
    function callbackInv(qh) 
        local result = dbPoll(qh, 0) 
        for index, row in pairs(result) do 
            createElement( "item", row.rowid ) 
            setElementData ( row.rowid, "item_id", row.id ) 
            setElementData ( row.rowid, "item_owner", source ) 
            setElementData ( row.rowid, "item_amount", row.amount ) 
        end 
    end 
end 
addEventHandler("onPlayerLogin", getRootElement(), loginHandler) 
  

Link to comment

У тебя callback находится после вызова dbQuery, т.е ты передаешь в dbQuery "nil" вместо самого каллбека, потому что его не существует на момент вызова.

Также потом ты делаешь выборку, ты указываешь нахождение по полю "owner" и передаешь элемент "source". Это не правильно, в базе данных не могут храниться объекты типа userdata. Я бы на твоем месте использовал бы ID аккаунта.

Link to comment
  • 3 weeks later...

Приветствую всех!

Подскажите пожалуйста, что лучше использовать для хранения данных об аккаунтах игроков и т. п., внешнюю БД MySQL или же, что есть с сервером МТА? Как лучше и почему?

С уважением, Дмитрий.

Link to comment
  • Other Languages Moderators
Приветствую всех!

Подскажите пожалуйста, что лучше использовать для хранения данных об аккаунтах игроков и т. п., внешнюю БД MySQL или же, что есть с сервером МТА? Как лучше и почему?

С уважением, Дмитрий.

Что лучше использовать, грабли или лопату?

Расскажи нам средний онлайн, или хотяб жанр гейммода...

Link to comment
Приветствую всех!

Подскажите пожалуйста, что лучше использовать для хранения данных об аккаунтах игроков и т. п., внешнюю БД MySQL или же, что есть с сервером МТА? Как лучше и почему?

С уважением, Дмитрий.

Внешнюю БД.

Link to comment

Подскажите пожалуйста, я правильно понимаю различия этих функций, onClientPreRender и onClientRender в следующем:

onClientPreRender - до прорисовки кадра на экране.

onClientRender - во время прорисовки кадра.

Для чего нужно эти разные функции?

Link to comment
  • Other Languages Moderators
Подскажите пожалуйста, я правильно понимаю различия этих функций, onClientPreRender и onClientRender в следующем:

onClientPreRender - до прорисовки кадра на экране.

onClientRender - во время прорисовки кадра.

Для чего нужно эти разные функции?

https://en.wikipedia.org/wiki/Swap_Chain

Link to comment
Подскажите пожалуйста, я правильно понимаю различия этих функций, onClientPreRender и onClientRender в следующем:

onClientPreRender - до прорисовки кадра на экране.

onClientRender - во время прорисовки кадра.

Для чего нужно эти разные функции?

https://en.wikipedia.org/wiki/Swap_Chain

И https://wiki.multitheftauto.com/wiki/Game_Processing_Order
Link to comment

Спасибо Вам за ссылки! :-)

Вот еще вопрос: можно сделать кнопки GUI интерфейса не стандпртными, например .png картинки и выводить через dxDrawImage? Примером помогите пожалуйста. Как понять что игрок нажал на картинку кнопки?

Link to comment

Разобрался :)

bt_enter2 = guiCreateStaticImage(0.47, 0.61, 0.07, 0.06, "img/bt_enter2.png", true)

addEventHandler ("onClientGUIClick", bt_enter2,

function (username, password)

playSound("sounds/click.mp3")

hideLoginGUI()

local username = guiGetText (username)

local password = guiGetText (password)

triggerServerEvent ("loginReq", getRootElement(), getLocalPlayer(), username, password)

end, false

)

Но теперь вот что получаю: ERROR: Loading script failed: account-system\c_main.lua:182: '=' expected near 'function'

Ошибка в этой строке: function showLoginGUI ()

Вот код:

username,password, lebel_login, lebel_password, bt_enter2

function showLoginGUI ()

username = guiCreateEdit(0.44, 0.41, 0.13, 0.04, "", true)

password = guiCreateEdit(0.44, 0.54, 0.13, 0.04, "", true)

guiEditSetMasked (password, true)

lebel_login = guiCreateStaticImage(0.42, 0.34, 0.16, 0.04, "img/lebel_login.png", true)

lebel_password = guiCreateStaticImage(0.47, 0.48, 0.07, 0.05, "img/lebel_password.png", true)

bt_enter2 = guiCreateStaticImage(0.47, 0.61, 0.07, 0.06, "img/bt_enter2.png", true)

addEventHandler ("onClientGUIClick", bt_enter2,

function (username, password)

playSound("sounds/click.mp3")

hideLoginGUI()

local username = guiGetText (username)

local password = guiGetText (password)

triggerServerEvent ("loginReq", getRootElement(), getLocalPlayer(), username, password)

end, false

)

end

Помогите пожалуйста :)

Link to comment
Разобрался :)

bt_enter2 = guiCreateStaticImage(0.47, 0.61, 0.07, 0.06, "img/bt_enter2.png", true)

addEventHandler ("onClientGUIClick", bt_enter2,

function (username, password)

playSound("sounds/click.mp3")

hideLoginGUI()

local username = guiGetText (username)

local password = guiGetText (password)

triggerServerEvent ("loginReq", getRootElement(), getLocalPlayer(), username, password)

end, false

)

Но теперь вот что получаю: ERROR: Loading script failed: account-system\c_main.lua:182: '=' expected near 'function'

Ошибка в этой строке: function showLoginGUI ()

Вот код:

username,password, lebel_login, lebel_password, bt_enter2

function showLoginGUI ()

username = guiCreateEdit(0.44, 0.41, 0.13, 0.04, "", true)

password = guiCreateEdit(0.44, 0.54, 0.13, 0.04, "", true)

guiEditSetMasked (password, true)

lebel_login = guiCreateStaticImage(0.42, 0.34, 0.16, 0.04, "img/lebel_login.png", true)

lebel_password = guiCreateStaticImage(0.47, 0.48, 0.07, 0.05, "img/lebel_password.png", true)

bt_enter2 = guiCreateStaticImage(0.47, 0.61, 0.07, 0.06, "img/bt_enter2.png", true)

addEventHandler ("onClientGUIClick", bt_enter2,

function (username, password)

playSound("sounds/click.mp3")

hideLoginGUI()

local username = guiGetText (username)

local password = guiGetText (password)

triggerServerEvent ("loginReq", getRootElement(), getLocalPlayer(), username, password)

end, false

)

end

Помогите пожалуйста :)

Ошибка в первой строке. Не понятно что вы хотели сделать, и даже если бы это позволил синтаксис, то единственное разумное решение этому - обнулить уже существующие глобальные переменные.

Если нужны локальные переменные(видимость только в этом файле) то в начале первой строки допишите "local ", а если, всё же, нужны глобальные - допишите "= nil". этого будет достаточно, остальные тоже будут обнулены, т.к. никаких значений им не передали.

Кстати, в сообщение об ошибке всё написано. "'=' expected near 'function'" дословно переводится как "'=' ожидается рядом с 'function'", именно рядом, т.е. ошибка не на этой строке.

Link to comment
отметь 182 строчку, чтобы понятнее было.

username,password, lebel_login, lebel_password, bt_enter2 = nil

function showLoginGUI () -- строка 182

username = guiCreateEdit(0.44, 0.41, 0.13, 0.04, "", true)

password = guiCreateEdit(0.44, 0.54, 0.13, 0.04, "", true)

guiEditSetMasked (password, true)

lebel_login = guiCreateStaticImage(0.42, 0.34, 0.16, 0.04, "img/lebel_login.png", true)

lebel_password = guiCreateStaticImage(0.47, 0.48, 0.07, 0.05, "img/lebel_password.png", true)

bt_enter2 = guiCreateStaticImage(0.47, 0.61, 0.07, 0.06, "img/bt_enter2.png", true)

addEventHandler ("onClientGUIClick", bt_enter2,

function (username, password)

playSound("sounds/click.mp3")

hideLoginGUI()

local username = guiGetText (username)

local password = guiGetText (password)

triggerServerEvent ("loginReq", getRootElement(), getLocalPlayer(), username, password)

end, false

)

end

addEvent ("showClientLoginGUI", true)

addEventHandler ("showClientLoginGUI", getRootElement(), showLoginGUI)

Link to comment
Разобрался :)

bt_enter2 = guiCreateStaticImage(0.47, 0.61, 0.07, 0.06, "img/bt_enter2.png", true)

addEventHandler ("onClientGUIClick", bt_enter2,

function (username, password)

playSound("sounds/click.mp3")

hideLoginGUI()

local username = guiGetText (username)

local password = guiGetText (password)

triggerServerEvent ("loginReq", getRootElement(), getLocalPlayer(), username, password)

end, false

)

Но теперь вот что получаю: ERROR: Loading script failed: account-system\c_main.lua:182: '=' expected near 'function'

Ошибка в этой строке: function showLoginGUI ()

Вот код:

username,password, lebel_login, lebel_password, bt_enter2

function showLoginGUI ()

username = guiCreateEdit(0.44, 0.41, 0.13, 0.04, "", true)

password = guiCreateEdit(0.44, 0.54, 0.13, 0.04, "", true)

guiEditSetMasked (password, true)

lebel_login = guiCreateStaticImage(0.42, 0.34, 0.16, 0.04, "img/lebel_login.png", true)

lebel_password = guiCreateStaticImage(0.47, 0.48, 0.07, 0.05, "img/lebel_password.png", true)

bt_enter2 = guiCreateStaticImage(0.47, 0.61, 0.07, 0.06, "img/bt_enter2.png", true)

addEventHandler ("onClientGUIClick", bt_enter2,

function (username, password)

playSound("sounds/click.mp3")

hideLoginGUI()

local username = guiGetText (username)

local password = guiGetText (password)

triggerServerEvent ("loginReq", getRootElement(), getLocalPlayer(), username, password)

end, false

)

end

Помогите пожалуйста :)

Ошибка в первой строке. Не понятно что вы хотели сделать, и даже если бы это позволил синтаксис, то единственное разумное решение этому - обнулить уже существующие глобальные переменные.

Если нужны локальные переменные(видимость только в этом файле) то в начале первой строки допишите "local ", а если, всё же, нужны глобальные - допишите "= nil". этого будет достаточно, остальные тоже будут обнулены, т.к. никаких значений им не передали.

Кстати, в сообщение об ошибке всё написано. "'=' expected near 'function'" дословно переводится как "'=' ожидается рядом с 'function'", именно рядом, т.е. ошибка не на этой строке.

Спасибо вам! Все верно, я не присвоил значение переменным... Я пишу скрипт регестрации для своего сервера.

Link to comment

При удалении некоторых крупных объектов мира возникает проблема. Едем по этому месту.

В редакторе всё прекрасно (http://burkow.ru/big/mta-screen_2015-07-20_13-25-04.jpg).

При размещении карты на сервере подключаемся - и всё плохо. Заезжаем в удалённый дом - и теряем из виду далее расположенные объекты (http://burkow.ru/big/mta-screen_2015-07-20_13-24-26.jpg). Прорисовка мира в редакторе и игре разная. Что сделать, чтобы глюка не было?

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...