Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!: Перевод на mysql — Форум Pawn-Wiki.Ru — Воплоти мечту в реальность!
- (2 Страниц)
- 1
- 2
- >
- Вы не можете создать новую тему
Тема закрыта
hypebot (28 января 2018 — 23:00) писал:
- Группа: Активные пользователи
- Сообщений: 311
- Регистрация: 15 декабря 17
hypebot, то есть человек только пытается разобраться в mysql и вы кинули ему update . даже без подключения к базе . вы бы чтото так поняли ?
ну вот смотри . я тебе на примере r40 объясню (раз только переходишь, ставь последнюю . )
объединим твои данные в массив с енуминатором .
в начале мода/скрипта пишем:
+ нам нужна еще переменная для хранения подключения с базой
тоже там же глобально обьявляем
теперь создадим сток для подключения с базой:
и в OnFilterScriptInit() или в OnGameModeInit() пишем:
отлично . через phpMyAdmin создаем табличку в нашей базе с нужными полями, можно сделать скрипт более универсальным и создавать эту табличку через код, что мы и сделаем:
создадим сток который будет проверять есть ли уже в базе наша табличка и если нет то создавать её
отлично и добавим это в OnFilterScriptInit() или в OnGameModeInit() то есть у нас уже будет:
круто .
теперь подключается игрок, надо обнулить его ячейку с данными в массиве, создадим сток для очистки:
тут же и имя его сразу считаем чтоб каждый раз не создавать переменные и не дергать GetPlayerName
теперь в OnPlayerConnect применяем эту очистку
сразу давайте пропишем установку скина (хотя это ужасно тут бесполезно), денег и очков, получается:
так насчет денег: чтоб не дать читерам читерить себе деньги мы будем доверять только pMoney . а GetPlayerMoney использовать не будем . соответственно и GivePlayerMoney по уму надо использовать . поэтому напишем пару стоков для работы с деньгами:
и соответственно в OnPlayerConnect заменим на только что написанные стоки выдачу денег:
вернемся к базе данных:
при заходе игрока нам надо считать данные (про авторизацию я вообще молчу)
напишем сток для чтения данных игрока из базы:
и добавим это в OnPlayerConnect, в итоге получили следующее:
что мы имеем: заходит игрок
мы выставляем ему стартовые значения(PlayerDataReset) и ищем его в базе (MysqlPlayerDataLoad) если он в базе есть то считываем данные, если еще нет то он начнет играть со стартовыми данными
это даже объяснять думаю не надо . тут с базой ничего не связано . а про деньги объяснял выше.
теперь завершающий шаг при выходе (OnPlayerDisconnect) нам нужно сохранить данные, напишем сток:
MysqlPlayerDataSave проверяет загружен ли игрок из базы, если загружен то в поле pId будет значение не равное -1 (-1 мы выставляем в PlayerDataReset, если в MysqlPlayerDataLoad игрок был найден в базе то загрузится его ид из базы)
так вот если игрок в базе есть то мы делаем UPDATE данных .
если игрока в базе нет то делаем INSERT данных
ну и применим этот сток:
если вам например надо вывести какойто диалог для регистрации или авторизации то есть проверить зарегистрирован игрок или нет то:
после строки MysqlPlayerDataLoad. вы можете проверить вот таким условием:
ну и соответственно если появится регистрация/авторизация то при выходе проверять авторизовался он или нет, ато вдруг он не авторизовался (не ввел пароль) то и сохранять не надо .
поэтому то что выше я написал это чисто пример, работать будет но понятное дело для нормального мода еще много каких проверок надо .
Сообщение отредактировал caHek2x: 29 января 2018 — 02:17
Pawno | Функции | Уроки | Скрипты | Карты
VirusTotal — бесплатная служба, осуществляющая анализ подозрительных файлов на предмет выявления вирусов, червей, троянов и всевозможных вредоносных программ.
Проверить свой файл
Я не один раз узнавал у знатоков, новичков, и у «професеоналов» о том, что же лучше: файлы (MxINI, dini) или СУБД (MySQL) ?
В этой теме я раскрою для кого-то что-то новое.
Предупреждаю, для особо одарённых, все посты которые я писал, и буду писать — исходят из моего опыта. Помимо Pawn я работал и в других ЯП. И получается, это идёт как бы моё личное мнение, которое я аргументирую.
Давайте начнём с файлов. Честно сказать, я dini использовал пару раз, и он мне не нравился своим «оформлением».
И ещё, dini — медленнее чем MxINI. (Как провести опыт? об этом в следующем посте)
Большинство функций которые существуют в dini — имеют в названии слово «dini» — это и портит зрение.
Как Вы поняли, dini не будем рассматривать. Расммотрим MxINI.
Плюсы:
1. Все данные сохраняются в Scriptfiles
2. Не нужно искать хостинг для того, чтобы загрузить свою БД.
3. Для новичков — хороший вариант.
4. Одна версия (нет обновлений)
5. Самый быстрый, среди всех файловых систем.
Это основное.
Минусы:
1. Имеет уязвимость, если у Вас сервер на MxINI, и при регистрации ввести типо Admin=5, то будет админка 5го уровня (при условии, что переменная совпала, как избавиться от уязвимости — ищите в интернете)
2. Работает на равной скорости жёсткого диска. Обычно на игровых хостингах используется SSD, но у меня VDS с HDD, и знаете что? Всё отлично, не тормозит, всё прекрасно.
3. При большом онлайне — данные начинают сбиваться. То аккаунты удаляются, то обнуляются, то путаются.
Такое происходит тогда, когда к примеру онлайн
100 игровов.
4. Если нужна система доната — то придётся подумать. Для новичков — выхода нет. Для знатоков — возможно, выход есть.
(Это реализуемо)
5. Когда аккаунтов в Scriptfiles слишком много — это плохо для хостинга. Т.к. чем больше Вы вносите информации для сохранения, тем больше вес файла. Теперь представим, что сохранений на 40 строк, с разным количеством символов.
Файл к примеру будет весить — 80 Кбайт. А что будет когда этих файлов будет 1000? Почти 80 мб! Кто-то скажет: «Пфф, 80 мб и че?» — я скажу: «Подумай головой, вот что!».
6. Нельзя сделать, к примеру: «Топ 10 лучших тащеров гетто» — точнее можно, но для этого нужно сделать цикл, в котором берётся аккаунт игрока — и оттуда вытаскиваем переменную убийств. Таких аккаунтов (файлов) к примеру 1000. Лагам привет!
И так, видим минусов больше, НО если Вы собираетесь делать не большой проект, рассчитанный на менее 100 слотов, то можете брать MxINI — хороший вариант.
MySQL или SQLite?
SQLite — не использовал, НО когда-то хотел, и решил глянуть — просто отвернулся и закрыл глаза.
MySQL — многим известная, разберём плюсы и минусы:
Плюсы:
1. Скорость работы (на высоте).
2. Сохраняй сколько угодно аккаунтов в БД, и всё ок.
3. Удобство в использовании.
4. Распространённая СУБД
5. Если какая-то ошибка в запросе, или ещё где-то связанное с MySQL, то напишет это в свой лог
6. Легко и просто вытащить любую переменную у каждого игрока, и сделать к примеру систему «топ 10 тащеров гетто»
(что-то хотел ещё написать, забыл, увы)
Минусы:
1. Трудно понять новичку (но это не точно, есть люди, которые сначало разбирались в MySQL, потом уже в MxINI)
2. Если промелькнул высокий пинг — запрос к БД отправляться будет «долго» (вместо миллисекунд, будете ждать секунду, или две)
3. Нужен хостинг, или что-то в этом духе, т.к. нужен PhpMyAdmin (в ней MySQL)
4. Иногда выходят обновления, но никому не мешает оставаться на той версии, которая тебе нравится, и удобна в использовании. В основном, обновляются значения переменных, и т.д. Я долгое время сидел на MySQL R7, теперь R41-2 (не совсем это относится к минусу, скорее между тем и тем)
И таким образом, тут у нас плюсов больше, чем минусов. От себя скажу — MySQL подойдёт отлично для проектов по-серьезнее, крупнее.
В итоге: Основные плюсы и минусы Вы рассмотрели, делайте выводы сами. Также, никто не запрещает использовать MySQL + MxINI. Да, такое можно, но как я считаю, это уже извращенство. Двум системам которые работают с данными — нет места друг другу.
Желаю удачи в набирании опыта, и так далее.
Тема: Переводим сервер на MySQL #1
Опции темы
Поиск по теме
Переводим сервер на MySQL #1
Osetin уже создавал тему о переводе сервера на MySQL , но она в большей степени показывала преимущества MySQL над фалами.
Я же хочу написать серию уроков о переводе мода написанного на файлайх в MySQL! И так начнем)
Это первый урок из серии о переводе сервера на MySQL! Для начало нам нужно будет подготовить Pawno и сам сервер к работе с MySQL,
первое что мы сделаем это скачаем плагин от by BlueG и библиотеку libmysql.dll (его нужно поместить в папку с сервером).
В архиве должно быть два файла: mysql.dll и a_mysql.inc.
Кидаем mysql.dll в папку plugins которая находится в папке с сервером и в server.cfg нужно дописать в строчке plugins:
Инклуд a_mysql.inc из архива скидываем ко всем инклудам pawno! Теперь нам нужно создать саму БД, вы можете создать на хостинге или на своем компьютере с помощью специальных программ, таких как: Denwer,MySQL 5.6.15 / 6.0.11 Alpha их много! Как создать саму БД:
Создайте поля:
Теперь в консоли сервера мы будем видеть состояние подключения к MySQL =)
На этом все ,скоро будут другие уроки!
При создание этого урока опирался информацию найденную в интернете!
Последний раз редактировалось Endo; 06.01.2014 в 16:23 .
PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..
25% времени в программировании уходит на размышления о том, что пользователь может сделать не так. [HR] /Брайан Хьюмс/
- [Plugin]Drift Points Counter Plug-In by Gamer_Z (RUS)
Уважаю данных Людей:
1. Osetin (Хороший Администратор)
2. Daniel_Cortez (Классный скриптер)
3. Londlem (Офигенный скриптер)
4. #Carleone (Просто хороший человек)
Пожертвование для создания проекта Hard-RolePlay:
WebMoney:R116691342884
Серьезно? А как же новички поймут где их создать?
Osetin уже создавал тему о переводе сервера на MySQL , но она в большей степени показывала преимущества MySQL над фалами.
Я же хочу написать серию уроков о переводе мода написанного на файлайх в MySQL! И так начнем)
Это первый урок из серии о переводе сервера на MySQL! Для начало нам нужно будет подготовить Pawno и сам сервер к работе с MySQL,
первое что мы сделаем это скачаем плагин от by BlueG и библиотеку libmysql.dll (его нужно поместить в папку с сервером).
В архиве должно быть два файла: mysql.dll и a_mysql.inc.
Кидаем mysql.dll в папку plugins которая находится в папке с сервером и в server.cfg нужно дописать в строчке plugins:
Инклуд a_mysql.inc из архива скидываем ко всем инклудам pawno! Теперь нам нужно создать саму БД, вы можете создать на хостинге или на своем компьютере с помощью специальных программ, таких как: Denwer,MySQL 5.6.15 / 6.0.11 Alpha их много! Как создать саму БД:
Создайте поля:
Теперь в консоли сервера мы будем видеть состояние подключения к MySQL =)
На этом все ,скоро будут другие уроки!
При создание этого урока опирался информацию найденную в интернете!