Продолжаем оживлять раздел с MTA . Не так уж и много Русскоязычных уроков/мануалов о создании в MTA различных систем, в особенности на MySQL. Лично я ещё вчера искал на просторах интернета информацию о том, как загружать данные (например информацию о транспорте), но ничего нужного мне не нашел. Поэтому решил сам написать урок, в котором будет предоставлен пример банальной загрузки данных и создания транспорта.
Задействована будет всего - лишь одна функция, которая будет расположена на серверной части ресурса.
И так, создаем таблицу в которой будет информация о транспорте. Скриншот со структурой таблицы ниже.
У кого не грузит скриншот, клик сюда.
Теперь переходим непосредственно к коду, в файле где у вас серверная часть пишем:
PHP код:
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
С радостью выслушаю любую адекватную критику по коду, от более опытных пользователей.
Урок был написан специально для Pro-Pawn, копирование на другие ресурсы без разрешения автора - запрещено!