PDA

Просмотр полной версии : [FS] Database Editor [MySQL R7]



Salvacore
12.08.2013, 09:31
Возможности:

Подключаться и отключаться к любой базе данных из игры
Посылать SQL-запросы из игры
Создавать/удалять таблицы из игры
Добавлять столбцы с выбором типа (INT, VARCHAR, FLOAT)
Удалять эти столбцы.
Сам скрипт:

//==============================================================================
//
// Garold's database editor
// All rights reserved
//
//------------------------------------------------------------------------------

#include <a_samp>
#include <a_mysql>

//------------------------------------------------------------------------------

new db_connected, query[256];
new dbname[40], table[30], uname[30], pass[30];
new field[30], type;

//------------------------------------------------------------------------------

public OnFilterScriptInit()
{
print("\n--------------------------------------");
print("Garold's Database Editor v0.1");
print("--------------------------------------\n");
mysql_debug(1);
return true;
}

public OnFilterScriptExit()
{
mysql_close();
return true;
}

public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}

public OnPlayerSpawn(playerid)
{
if(IsPlayerAdmin(playerid)) {
SendClientMessage(playerid, 0xFFFFFFFF, "D-EDITOR: Для редактирования базы данных введите /mysql");
}
return true;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mysql", cmdtext, true, 10) == 0)
{
if(!db_connected) ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Database Editor", "Подключиться к базе данных", "Выбрать", "Выход");
else ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Database Editor", "Отключиться от БД\nПослать SQL запрос\nСоздать таблицу\nУдалить таблицу\nДобавить столбец в таблицу\nУдалить столбец из таблицы", "Выбрать", "Выход");
return 1;
}
return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid) {
case 0: {
if(response) {
if(!listitem) {
if(!db_connected) ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Database Editor", "Введите название базы данных", "Ввод", "Назад");
else {
mysql_close();
db_connected = 0;
SendClientMessage(playerid, 0xFFFFFFFF, "Вы отключились от базы данных");
}
}
else if(listitem == 1) ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Database Editor", "Введите запрос", "Ввод", "Назад");
else if(listitem == 2) ShowPlayerDialog(playerid, 3, DIALOG_STYLE_INPUT, "Database Editor", "Введите название таблицы", "Ввод", "Назад");
else if(listitem == 3) ShowPlayerDialog(playerid, 4, DIALOG_STYLE_INPUT, "Database Editor", "Введите название таблицы", "Ввод", "Назад");
else if(listitem == 4) ShowPlayerDialog(playerid, 5, DIALOG_STYLE_INPUT, "Database Editor", "Введите название таблицы", "Ввод", "Назад");
else if(listitem == 5) ShowPlayerDialog(playerid, 6, DIALOG_STYLE_INPUT, "Database Editor", "Введите название таблицы", "Ввод", "Назад");
else if(listitem == 6) ShowPlayerDialog(playerid, 7, DIALOG_STYLE_INPUT, "Database Editor", "Введите название таблицы", "Ввод", "Назад");
}
}
case 1: {
if(response) {
if(strlen(inputtext)) {
strmid(dbname, inputtext, 0, strlen(inputtext), 255);
ShowPlayerDialog(playerid, 10, DIALOG_STYLE_INPUT, "Database Editor", "Введите имя пользователя", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Database Editor", "Введите название базы данных", "Ввод", "Назад");
}
else {
if(!db_connected) ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Database Editor", "Подключиться к базе данных", "Выбрать", "Выход");
else ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Database Editor", "Отключиться от БД\nПослать SQL запрос\nСоздать таблицу\nУдалить таблицу\nДобавить столбец в таблицу\nУдалить столбец из таблицы\nДобавить строку в таблицу\nУдалить строку из таблицы\nОбновить таблицу", "Выбрать", "Выход");
}
}
case 2: {
if(response) {
if(strlen(inputtext)) {
mysql_function_query(db_connected, inputtext, false, "", "");
SendClientMessage(playerid, 0xFFFFFFFF, "Запрос был отправлен");
}
else ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Database Editor", "Введите запрос", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Database Editor", "Отключиться от БД\nПослать SQL запрос\nСоздать таблицу\nУдалить таблицу\nДобавить столбец в таблицу\nУдалить столбец из таблицы\nДобавить строку в таблицу\nУдалить строку из таблицы\nОбновить таблицу", "Выбрать", "Выход");
}
case 3: {
if(response) {
if(strlen(inputtext)) {
format(query, 256, "CREATE TABLE IF NOT EXISTS `%s` (`testcolumn` int(24) NOT NULL)", inputtext);
mysql_function_query(db_connected, query, false, "", "");
SendClientMessage(playerid, 0xFFFFFFFF, "Запрос был отправлен");
}
else ShowPlayerDialog(playerid, 3, DIALOG_STYLE_INPUT, "Database Editor", "Введите название таблицы", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Database Editor", "Отключиться от БД\nПослать SQL запрос\nСоздать таблицу\nУдалить таблицу\nДобавить столбец в таблицу\nУдалить столбец из таблицы\nДобавить строку в таблицу\nУдалить строку из таблицы\nОбновить таблицу", "Выбрать", "Выход");
}
case 4: {
if(response) {
if(strlen(inputtext)) {
format(query, 256, "DROP TABLE `%s`", inputtext);
mysql_function_query(db_connected, query, false, "", "");
SendClientMessage(playerid, 0xFFFFFFFF, "Запрос был отправлен");
}
else ShowPlayerDialog(playerid, 4, DIALOG_STYLE_INPUT, "Database Editor", "Введите название таблицы", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Database Editor", "Отключиться от БД\nПослать SQL запрос\nСоздать таблицу\nУдалить таблицу\nДобавить столбец в таблицу\nУдалить столбец из таблицы\nДобавить строку в таблицу\nУдалить строку из таблицы\nОбновить таблицу", "Выбрать", "Выход");
}
case 5: {
if(response) {
if(strlen(inputtext)) {
format(table, 30, "%s", inputtext);
ShowPlayerDialog(playerid, 11, DIALOG_STYLE_INPUT, "Database Editor", "Введите название столбца", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 5, DIALOG_STYLE_INPUT, "Database Editor", "Введите название таблицы", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Database Editor", "Отключиться от БД\nПослать SQL запрос\nСоздать таблицу\nУдалить таблицу\nДобавить столбец в таблицу\nУдалить столбец из таблицы\nДобавить строку в таблицу\nУдалить строку из таблицы\nОбновить таблицу", "Выбрать", "Выход");
}
case 6: {
if(response) {
if(strlen(inputtext)) {
format(table, 30, "%s", inputtext);
ShowPlayerDialog(playerid, 12, DIALOG_STYLE_INPUT, "Database Editor", "Введите название столбца", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 6, DIALOG_STYLE_INPUT, "Database Editor", "Введите название таблицы", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Database Editor", "Отключиться от БД\nПослать SQL запрос\nСоздать таблицу\nУдалить таблицу\nДобавить столбец в таблицу\nУдалить столбец из таблицы\nДобавить строку в таблицу\nУдалить строку из таблицы\nОбновить таблицу", "Выбрать", "Выход");
}
case 10: {
if(response) {
if(strlen(inputtext)) {
format(uname, 30, "%s", inputtext);
ShowPlayerDialog(playerid, 16, DIALOG_STYLE_INPUT, "Database Editor", "Введите пароль (0 если его нет)", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 10, DIALOG_STYLE_INPUT, "Database Editor", "Введите имя пользователя", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Database Editor", "Введите название базы данных", "Ввод", "Назад");
}
case 11: {
if(response) {
if(strlen(inputtext)) {
format(field, 30, "%s", inputtext);
ShowPlayerDialog(playerid, 17, DIALOG_STYLE_LIST, "Database Editor", "INT\nVARCHAR\nFLOAT", "Выбрать", "Назад");
}
else ShowPlayerDialog(playerid, 11, DIALOG_STYLE_INPUT, "Database Editor", "Введите название столбца", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 5, DIALOG_STYLE_INPUT, "Database Editor", "Введите название таблицы", "Ввод", "Назад");
}
case 12: {
if(response) {
if(strlen(inputtext)) {
format(query, 256, "ALTER TABLE `%s` DROP `%s`", table, inputtext);
mysql_function_query(db_connected, query, false, "", "");
SendClientMessage(playerid, 0xFFFFFFFF, "Запрос был отправлен");
}
else ShowPlayerDialog(playerid, 11, DIALOG_STYLE_INPUT, "Database Editor", "Введите название столбца", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 6, DIALOG_STYLE_INPUT, "Database Editor", "Введите название таблицы", "Ввод", "Назад");
}
case 16: {
if(response) {
if(strlen(inputtext)) {
format(pass, 30, "%s", inputtext);
mysql_function_query(db_connected, query, false, "", "");
if(strval(inputtext) == 0) db_connected = mysql_connect("localhost", uname, dbname, "");
else db_connected = mysql_connect("localhost", uname, dbname, pass);
if(mysql_ping() == -1) {
SendClientMessage(playerid, 0xFFFFFFFF, "Не удалось подключиться");
db_connected = 0;
}
else SendClientMessage(playerid, 0xFFFFFFFF, "Успешно");
}
else ShowPlayerDialog(playerid, 16, DIALOG_STYLE_INPUT, "Database Editor", "Введите пароль (0 если его нет)", "Ввод", "Назад");
}
else ShowPlayerDialog(playerid, 10, DIALOG_STYLE_INPUT, "Database Editor", "Введите имя пользователя", "Ввод", "Назад");
}
case 17: {
if(response) {
type = listitem;
new ttype[10];
if(!type) ttype = "INT";
else if(type == 1) ttype = "VARCHAR";
else ttype = "FLOAT";
format(query, 256, "ALTER TABLE `%s` ADD `%s` %s(30) NOT NULL", table, field, ttype);
mysql_function_query(db_connected, query, false, "", "");
SendClientMessage(playerid, 0xFFFFFFFF, "Запрос был отправлен");
}
else ShowPlayerDialog(playerid, 11, DIALOG_STYLE_INPUT, "Database Editor", "Введите название столбца", "Ввод", "Назад");
}
}
return true;
}
ВАЖНО: Для работы нужен plugin"Mysql R7"
Автор: Гарольд