BlackJack
| |
GodlikE145
|
Дата: Пятница, 01.01.2016, 13:53:27 | Сообщение # 1 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 33
Репутация: 9 [ +/- ]
|
|
Всем привет! Многие начинающие скриптёры задавались вопросом, как работать с базами данных и использовать их в своих плагинах. Я решил сделать плагин-урок по использованию БД, где подробно объясню, как составлять запросы, создавать таблицы и т.п. Плагин представляет собой всем известную игру BlackJack (в России её еще называют "Двадцать одно" или "Очко"). В исходнике подробно описано, как работать с базами данных. Надеюсь, всё изложил понятно, поправьте, если я где-то неправ.
P.S. Выражаю благодарность Фениксу, Riko, форуму world-source.ru, а также проекту "Красная Звезда".
Примечание: плагин работает на CS:GO. Если измените цветовые коды под css, то будет работать и на css.
Желаю удачи в использовании БД в ваших плагинах! Скриншоты:
![](http://world-source.ru/_fr/44/s0388686.jpg)
Гости не могут скачивать файлы
|
Сообщение отредактировал GodlikE145 - Суббота, 02.01.2016, 10:49:55 |
|
| |
хвостег
|
Дата: Воскресенье, 14.02.2016, 02:33:14 | Сообщение # 2 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 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 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 33
Репутация: 9 [ +/- ]
|
|
хвостег, Верно. Полезное замечание, спасибо. Я не посмотрел правила в интернете, основывался на том, как "батя учил".
По поводу реализации, да, я как-то не подумал про массив с очками. Первое, что пришло в голову, это написать функцию. Но ключевой момент этого плагина в том, чтобы новички посмотрели, как с базами работать)
Как время будет, исправлю.
Сообщение отредактировал GodlikE145 - Воскресенье, 14.02.2016, 11:42:01 |
|
| |
хвостег
|
Дата: Вторник, 16.02.2016, 13:00:07 | Сообщение # 4 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 161
Репутация: 53 [ +/- ]
|
|
Цитата GodlikE145 ( ![Ссылка на цитируемый текст](http://s9.ucoz.net/img/fr/ic/2/lastpost.gif) ) Но ключевой момент этого плагина в том, чтобы новички посмотрели, как с базами работать) Я все прекрасно понимаю, но твой "урок" ничего толком не объясняет. Не считай этот пост "камнем в чужой огород" это просто конструктивная критика.
Те запросы что ты продемонстрировал в коде - всего лишь пример того, как оно должно работать в конкретном примере и не более того(за исключением 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 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 33
Репутация: 9 [ +/- ]
|
|
хвостег, да, критика действительно конструктивная и заслуживает внимания. Соглашусь, всех тонкостей я не затронул, но новичкам это и не нужно. Я учился на подобном плагине, но там была простая статистика. Этот плагин я сделал, чтобы познакомить начинающих кодеров с БД, чтобы показать им, что тут нет ничего страшного, и на БД можно делать много неплохих штук, в частности, простенькую игру. А для дальнейшего изучения БД им придется копаться в гугле и искать источники поинформативнее, более разнонаправленные. Кстати, я указал, что такое AUTO_INCREMENT, зачем нужен PRIMARY_KEY, а также, что базы данных затрачивают много ресурсов. Думаю, для старта этот тутор может быть пригоден, а тем, кому нужно больше информации (продвинутым кодерам), советую гуглить конкретные статьи по Sql. Похоже, вы не вчитались в мой тутор, а просто увидели, что там с самого начала прут запросы, и написали сюда. Советую внимательно всё перечитать. Спасибо за критику.
Сообщение отредактировал GodlikE145 - Среда, 13.04.2016, 10:19:53 |
|
| |
Kaneki
|
Дата: Пятница, 08.07.2016, 22:18:18 | Сообщение # 6 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 8
Репутация: 0 [ +/- ]
|
|
----..
|
|
| |
GodlikE145
|
Дата: Суббота, 09.07.2016, 17:06:22 | Сообщение # 7 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 33
Репутация: 9 [ +/- ]
|
|
Цитата Kaneki ( ![Ссылка на цитируемый текст](/.s/img/fr/ic/2/lastpost.gif) ) ----.. Что это значит? Расшифруй пожалуйста
|
|
| |
Jon4ik
|
Дата: Суббота, 09.07.2016, 19:49:08 | Сообщение # 8 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 278
Репутация: 7 [ +/- ]
|
|
GodlikE145, Это новореги так сообщения набивают.
|
|
| |
Brownie
|
Дата: Пятница, 28.08.2020, 17:55:08 | Сообщение # 9 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 3
Репутация: -1 [ +/- ]
|
|
Помогите перевести под Shop Core пожалуйста)Добавлено (02.10.2020, 21:36:46) --------------------------------------------- Сделайте такой же пожалуйста для SHOP, буду очень благодарен!
|
|
| |
|