Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 5 из 5
  1. #1
    Аватар для Ray_Grand
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.11.2015
    Сообщений
    7
    Репутация:
    7 ±

    Загрузка информации из базы данных MySQL.

    Продолжаем оживлять раздел с MTA . Не так уж и много Русскоязычных уроков/мануалов о создании в MTA различных систем, в особенности на MySQL. Лично я ещё вчера искал на просторах интернета информацию о том, как загружать данные (например информацию о транспорте), но ничего нужного мне не нашел. Поэтому решил сам написать урок, в котором будет предоставлен пример банальной загрузки данных и создания транспорта.

    Задействована будет всего - лишь одна функция, которая будет расположена на серверной части ресурса.
    И так, создаем таблицу в которой будет информация о транспорте. Скриншот со структурой таблицы ниже.

    У кого не грузит скриншот, клик сюда.

    Теперь переходим непосредственно к коду, в файле где у вас серверная часть пишем:
    PHP код:
    local vehicle = {} //Эта переменная служит хранилищем всех данных о транспорте.

    addEventHandler("onResourceStart"getResourceRootElement(), function() //Функция, которая при загрузке ресурса (onResourceStart, будет следом загружать весь транспорт.
        
    local time getTickCount() //Переменная, которая понадобиться нам для того, чтобы узнать за сколько миллисекунд загрузился транспорт.
        
    local result mysql_query(database"SELECT * FROM `cars`"//Запрос на получение данных из таблицы с транспортом.
        
    local count //Переменная, в которую записывается число загруженного транспорта.
        
    if(resultthen //Если запрос успешен - идём дальше.
            
    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 (modelxyz//Создаем сам транспорт на сервере.
                //В коде ниже, мы не просто в локальную переменную, нужную только для загрузки записываем данные, а в переменную которая может работать во всем серверном скрипте.
    //Если сравнивать переменную (или еще можно назвать - таблицу) 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 к переменной которая хранит количество загруженного транспорта.
            
    end
            mysql_free_result
    (result//Очищаем результат запроса
        
    end
        outputDebugString
    ("Cars: "..count.." | Time: "..(getTickCount() - time).."ms"//Выводим в консоль информацию о загруженном транспорте.
    end


    Автор: Ray_Grand
    С радостью выслушаю любую адекватную критику по коду, от более опытных пользователей.

    Урок был написан специально для Pro-Pawn, копирование на другие ресурсы без разрешения автора - запрещено!

  2. #2
    Аватар для Disinterpreter
    Проверенный

    Статус
    Оффлайн
    Регистрация
    02.01.2014
    Сообщений
    88
    Репутация:
    91 ±
    Использовать Mysql модуль не рекомендуется, это не безопасно.

  3. #3
    Аватар для Ray_Grand
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.11.2015
    Сообщений
    7
    Репутация:
    7 ±
    А что тогда посоветуете использовать, если модуль MySQL не безопасен? Точно не в файлах же хранить данные.

  4. #4
    Аватар для Disinterpreter
    Проверенный

    Статус
    Оффлайн
    Регистрация
    02.01.2014
    Сообщений
    88
    Репутация:
    91 ±
    Цитата Сообщение от Ray_Grand Посмотреть сообщение
    А что тогда посоветуете использовать, если модуль MySQL не безопасен? Точно не в файлах же хранить данные.
    https://wiki.multitheftauto.com/wiki/DbConnect

    5й по счету пример.

  5. #5
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Ray_Grand Посмотреть сообщение
    А что тогда посоветуете использовать, если модуль MySQL не безопасен? Точно не в файлах же хранить данные.
    Как вам уже ответили выше, в MTA MySQL поддерживается из коробки.
    И в файлах таки можно хранить данные, если маршализовать их и впоследствии загружать как скрипт на Lua.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •