Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 11
Форум » SourceMod - Counter Strike Source && CS GO » Плагины (от пользователей) » BlackJack (Плагин-урок по Базам Данных для начинающих)
BlackJack
GodlikE145 Дата: Пятница, 01.01.2016, 13:53:27 | Сообщение # 1
Сообщений: 33
Репутация: 9 [ +/- ]
Всем привет! Многие начинающие скриптёры задавались вопросом, как работать с базами данных и использовать их в своих плагинах. Я решил сделать плагин-урок по использованию БД, где подробно объясню, как составлять запросы, создавать таблицы и т.п.
Плагин представляет собой всем известную игру BlackJack (в России её еще называют "Двадцать одно" или "Очко").
В исходнике подробно описано, как работать с базами данных. Надеюсь, всё изложил понятно, поправьте, если я где-то неправ.

P.S. Выражаю благодарность Фениксу, Riko, форуму world-source.ru, а также проекту "Красная Звезда".


Примечание: плагин работает на CS:GO. Если измените цветовые коды под css, то будет работать и на css.

Желаю удачи в использовании БД в ваших плагинах!
Скриншоты:

Прикрепления: 7319574.png(347Kb) · 8644366.png(273Kb) · 0388686.png(205Kb) · BlackJack.rar(21Kb)


Сообщение отредактировал GodlikE145 - Суббота, 02.01.2016, 10:49:55
 
хвостег Дата: Воскресенье, 14.02.2016, 02:33:14 | Сообщение # 2
Сообщений: 161
Репутация: 53 [ +/- ]
В Black Jack - Король, Дама, Валет = 10 очков. Туз = 11 если сумма всех очков не превышает 21, иначе Туз = 1.
Так что это не Black Jack, а что-то еще...

Это вообще кошмар.
Код
stock StrToScore(String:str[]) //Функция для переведения строки с картой в очки
{
    new ch;
    if(StrEqual(str, "2", true) || StrEqual(str, "J", true)) ch = 2;
    if(StrEqual(str, "3", true) || StrEqual(str, "Q", true)) ch = 3;
    if(StrEqual(str, "4", true) || StrEqual(str, "K", true)) ch = 4;
    if(StrEqual(str, "5", true)) ch = 5;
    if(StrEqual(str, "6", true)) ch = 6;
    if(StrEqual(str, "7", true)) ch = 7;
    if(StrEqual(str, "8", true)) ch = 8;
    if(StrEqual(str, "9", true)) ch = 9;
    if(StrEqual(str, "10", true)) ch = 10;
    if(StrEqual(str, "A", true)) ch = 11;
    
    return ch;
}


Если ты сделал массив с картами, то что тебе мешает сделать массив с очками?
Все равно ты получаешь индекс в массиве карт через рандом.
 
GodlikE145 Дата: Воскресенье, 14.02.2016, 11:40:27 | Сообщение # 3
Сообщений: 33
Репутация: 9 [ +/- ]
хвостег, Верно. Полезное замечание, спасибо. Я не посмотрел правила в интернете, основывался на том, как "батя учил".

По поводу реализации, да, я как-то не подумал про массив с очками. Первое, что пришло в голову, это написать функцию.
Но ключевой момент этого плагина в том, чтобы новички посмотрели, как с базами работать)

Как время будет, исправлю.


Сообщение отредактировал GodlikE145 - Воскресенье, 14.02.2016, 11:42:01
 
хвостег Дата: Вторник, 16.02.2016, 13:00:07 | Сообщение # 4
Сообщений: 161
Репутация: 53 [ +/- ]
Цитата GodlikE145 ()
Но ключевой момент этого плагина в том, чтобы новички посмотрели, как с базами работать)

Я все прекрасно понимаю, но твой "урок" ничего толком не объясняет.
Не считай этот пост "камнем в чужой огород" это просто конструктивная критика.

Те запросы что ты продемонстрировал в коде - всего лишь пример того, как оно должно работать в конкретном примере и не более того(за исключением DROP TABLE), нет четкого объяснения что такое PRIMARY KEY(PK) и как его использовать, нет пометок что PK может быть в нескольких полях и прочее.
AUTO_INCREMENT - Что это? Когда это использовать?
На заметку!
В SQLite есть такое поле как unique_id, оно есть в любой базе, поэтому автоинкремент не нужен, но об этом упоминания нет.
Кстати говоря в MySql такого нет, поэтому приходится использовать автоинкремент, но особым образом!

Так же нужно понимать что запросы к БД занимают очень много времени и это нужно учитывать в коде!
Так же есть запросы которым не нужно это учитывать, об этом никто не пишет, а почему?

Я в своем посте указал только несколько моментов, а их множество.
Чтобы подготовить новичка для работы с БД недостаточно просто сунуть ему готовые запросы.
Новичку нужно объяснить как это работает и когда нужно что-либо использовать, и когда нет.
Именно из-за того что система запросов очень гибкая, до сих пор нет подробного туториала, есть только объяснение функций запросов.

При работе с Базой данных есть очень много нюансов и тонкостей, которые нужно осветить, поэтому одного урока тут явно не хватит, тут нужен цикл уроков с подробными объяснениями.
Это сложно и никому не нужно.

И еще один не мало важный фактор.
В сурсмоде есть возможность использовать как SQLite так и MySql, между ними огромная разница, поэтому нужно разбирать примеры сразу на 2х базах для разъяснения принципов.

Добавлено (16.02.2016, 13:00:07)
---------------------------------------------
И для тех кто начнет бомбить, типо ты тут разглагольствуешь, так напиши тутор.
Я знаю много, но недостаточно чтобы научить всему...

 
GodlikE145 Дата: Среда, 13.04.2016, 10:19:06 | Сообщение # 5
Сообщений: 33
Репутация: 9 [ +/- ]
хвостег, да, критика действительно конструктивная и заслуживает внимания. Соглашусь, всех тонкостей я не затронул, но новичкам это и не нужно. Я учился на подобном плагине, но там была простая статистика. Этот плагин я сделал, чтобы познакомить начинающих кодеров с БД, чтобы показать им, что тут нет ничего страшного, и на БД можно делать много неплохих штук, в частности, простенькую игру. А для дальнейшего изучения БД им придется копаться в гугле и искать источники поинформативнее, более разнонаправленные.
Кстати, я указал, что такое AUTO_INCREMENT, зачем нужен PRIMARY_KEY, а также, что базы данных затрачивают много ресурсов. Думаю, для старта этот тутор может быть пригоден, а тем, кому нужно больше информации (продвинутым кодерам), советую гуглить конкретные статьи по Sql.
Похоже, вы не вчитались в мой тутор, а просто увидели, что там с самого начала прут запросы, и написали сюда. Советую внимательно всё перечитать.
Спасибо за критику.


Сообщение отредактировал GodlikE145 - Среда, 13.04.2016, 10:19:53
 
Kaneki Дата: Пятница, 08.07.2016, 22:18:18 | Сообщение # 6
Сообщений: 8
Репутация: 0 [ +/- ]
----..
 
GodlikE145 Дата: Суббота, 09.07.2016, 17:06:22 | Сообщение # 7
Сообщений: 33
Репутация: 9 [ +/- ]
Цитата Kaneki ()
----..

Что это значит? Расшифруй пожалуйста
 
Jon4ik Дата: Суббота, 09.07.2016, 19:49:08 | Сообщение # 8
Сообщений: 279
Репутация: 7 [ +/- ]
GodlikE145, Это новореги так сообщения набивают.
 
Форум » SourceMod - Counter Strike Source && CS GO » Плагины (от пользователей) » BlackJack (Плагин-урок по Базам Данных для начинающих)
Страница 1 из 11
Поиск: