Не так уж и много Русскоязычных уроков/мануалов о создании в MTA различных систем, в особенности на MySQL. Лично я ещё вчера искал на просторах интернета информацию о том, как загружать данные (например информацию о транспорте), но ничего нужного мне не нашел. Поэтому решил сам написать урок, в котором будет предоставлен пример банальной загрузки данных и создания транспорта.
Задействована будет всего - лишь одна функция, которая будет расположена на серверной части ресурса.
И так, создаем таблицу в которой будет информация о транспорте. Скриншот со структурой таблицы ниже.
Теперь переходим непосредственно к коду, в файле где у вас серверная часть пишем:
local vehicle = {} //Эта переменная служит хранилищем всех данных о транспорте. addEventHandler("onResourceStart", getResourceRootElement(), function() //Функция, которая при загрузке ресурса (onResourceStart, будет следом загружать весь транспорт. local time = getTickCount() //Переменная, которая понадобиться нам для того, чтобы узнать за сколько миллисекунд загрузился транспорт. local result = mysql_query(database, "SELECT * FROM `cars`") //Запрос на получение данных из таблицы с транспортом. local count = 0 //Переменная, в которую записывается число загруженного транспорта. if(result) then //Если запрос успешен - идём дальше. while true do //Цикл local row = mysql_fetch_assoc(result) if not row then break end //Если нечего загружать - останавливаем цикл и дальнейшую загрузку. local id = tonumber(row["id"]) //Записываем в переменную "id", номер (id) транспорта из базы данных. local model = tonumber(row["model"]) //Записываем в переменную модель транспорта local x = tonumber(row["x"]) //Записываем х координату local y = tonumber(row["y"]) //Записываем y координату local z = tonumber(row["z"]) //Записываем z координату vehicle[id] = createVehicle (model, x, y, z) //Создаем сам транспорт на сервере. //В коде ниже, мы не просто в локальную переменную, нужную только для загрузки записываем данные, а в переменную которая может работать во всем серверном скрипте. //Если сравнивать переменную (или еще можно назвать - таблицу) local vehicle = {} на Lua и Pawn, то в Pawn это можно представить примерно как new VehicleInfo[MAX_VEHICLES][data];, то вместо "data" будет использоваться название "ключа", которое используется внутри функций setElementData, думаю понятно тут объяснил. setElementData(vehicle[id], "vehicle:id", id) setElementData(vehicle[id], "vehicle:model", model) setElementData(vehicle[id], "vehicle:x", x) setElementData(vehicle[id], "vehicle:y", y) setElementData(vehicle[id], "vehicle:z", z) count = count + 1 //Прибавляем +1 к переменной которая хранит количество загруженного транспорта. end mysql_free_result(result) //Очищаем результат запроса end outputDebugString("Cars: "..count.." | Time: "..(getTickCount() - time).."ms") //Выводим в консоль информацию о загруженном транспорте. end)
Автор урока: Ray_Grand
Теги: MySQL