Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // This is a comment
- // uncomment the line below if you want to write a filterscript
- //#define FILTERSCRIPT
- #include <a_samp>
- #include <fix>
- #include "streamer"
- #include "a_actor"
- #include "a_mysql"
- #include "dc_cmd"
- #include "sscanf2"
- #include <mxdate>
- #include <foreach>
- //=======================================[ Дефайны ]========================================================================
- //--------------База данных-------------
- #define SQL_HOST "localhost"
- #define SQL_USER "root"
- #define SQL_PASS "mypwd"
- #define SQL_DB "mydb"
- //-------------Дефайны функций----------
- #define SCM SendClientMessage
- #define SCMTA SendClientMessageToAll
- #define SPD ShowPlayerDialog
- //-------------Дефайны цвета------------
- #define COLOR_GREY 0xAFAFAFAA
- #define COLOR_YELLOW 0xF7FF00FF
- #define COLOR_WHITE 0xFFFFFFFF
- #define COLOR_RED 0xF0320CFF
- #define COLOR_ORANGEYELLOW 0xFFDF0FFF
- #define COLOR_LIGHTRED 0xFF4530FF
- #define COLOR_LIGHTGREY 0xD1D1D1FF
- #define COLOR_BLUE 0x3657FFFF
- #define COLOR_SALAD 0xA0FF33FF
- #define COLOR_GREEN 0x4BCC2BFF
- #define COLOR_ORANGE 0xFF7A05FF
- #define SERVER_NAME "Dawn RolePlay"//название сервера
- //----------------------Правила сервера-------------------
- new rules[] =
- "{FFDA1F}1. Основное{FFFFFF}\n"\
- "-Запрещено использовать любые читы, трейнеры, моды или CLEO скрипты\n"\
- "-Запрещен DeathMatch (DM) - убийство и нанесение вреда игрокам без причины\n"\
- "-Запрещено убивать игроков на спавне (на месте, где они появляются в игре)\n"\
- "-Запрещены убийства путем наезда на него или стрельбы из авто\n"\
- "-Запрещено уходить на паузу в целях спасения от нападающих\n"\
- "-Запрещено использование возможностей сервера для создания неудобств другим игрокам\n",
- rules_1[] =
- "{FFDA1F}2. Процесс общения{FFFFFF}\n"\
- "-Запрещен мат, оскорбление других игроков\n"\
- "-Запрещены угрозы другим игрокам (не относящиеся к игровому процессу)\n"\
- "-Запрещено писать транслитом (например ""ya zawel na server"")\n"\
- "-Запрещена любая реклама сторонних ресурсов\n"\
- "-Запрещено флудить (часто повторять одинаковые фразы, или фразы без смысловой нагрузки)\n",
- rules_2[] =
- "{FFDA1F}3. Администрация{FFFFFF}\n"\
- "-Необходимо сообщать администрации сервера о любых случаях нарушения данных правил\n"\
- "-Администрация самостоятельно выбирает штрафные санкции для каждого конкретного случая\n"\
- "-Санкции могут применяться сразу после нарушения или через время (например, впослдествии поступления жалобы)\n"\
- "-Если штрафная санкция была применена к вам ошибочно, свяжитесь с администрацией";
- enum player
- {
- ID[6],
- NAME[MAX_PLAYER_NAME +1],
- MONEY[128],
- LEVEL[4],
- }
- new pInfo[MAX_PLAYERS][player];
- new query[256];
- main()
- {
- print("\n----------------------------------");
- print(" Blank Gamemode by your name here");
- print("----------------------------------\n");
- }
- //new MySQL: sql;
- new MySQL: cHandle;
- public OnGameModeInit()
- {
- //=======================================[ Соединение с базой данных ]==================================================
- new MySQLOpt: option_id = mysql_init_options(); // Опции MySQL
- mysql_set_option(option_id, AUTO_RECONNECT, true); // Авто переподключение
- cHandle = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB, option_id); // Ф-я подключения
- if(cHandle == MYSQL_INVALID_HANDLE || mysql_errno(cHandle) != 0) // роверка на подключение к базе данных
- {
- print("[MySQL] Не удалось установить соединение с базой данных."); // Вывод сообщения в консоль
- SendRconCommand("exit"); // Остановка сервера
- return 1;
- }
- print("[MySQL] Соединение с базой данных успешно установленно.");
- //mysql_log(ERROR | WARNING);
- mysql_log(ERROR | WARNING);
- DisableInteriorEnterExits();
- EnableStuntBonusForAll(0);
- SetGameModeText("test");
- SendRconCommand("hostname "SERVER_NAME"");
- rules[sizeof(rules)-1] = '\n';
- rules_1[sizeof(rules_1)-1] = '\n';
- rules_2[sizeof(rules_2)-1] = '\0';
- AddPlayerClass(0,1755.1631,-1894.1062,13.5568,268.8526,0,0,0,0,0,0);
- return 1;
- }
- public OnGameModeExit()
- {
- mysql_close(); // Закрываем соединение с базой данных
- return 1;
- }
- 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 OnPlayerConnect(playerid)
- {
- GetPlayerName(playerid, pInfo[playerid][NAME], MAX_PLAYER_NAME);
- SetTimerEx("CheckPlayerExistance", 1000, 0, "i", playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- //save_account(playerid);
- mysql_close();
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- clear_player(playerid);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if (strcmp("/test", cmdtext, true, 10) == 0)
- {
- GivePlayerMoney(playerid, 50000);
- // Do something here
- return 1;
- }
- return 0;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- return 1;
- }
- public OnPlayerObjectMoved(playerid, objectid)
- {
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- return 1;
- }
- public OnVehicleMod(playerid, vehicleid, componentid)
- {
- return 1;
- }
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
- {
- return 1;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- return 1;
- }
- public OnPlayerSelectedMenuRow(playerid, row)
- {
- return 1;
- }
- public OnPlayerExitedMenu(playerid)
- {
- return 1;
- }
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnPlayerStreamIn(playerid, forplayerid)
- {
- return 1;
- }
- public OnPlayerStreamOut(playerid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamIn(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamOut(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case 1:
- {
- if(!response)
- {
- SPD(playerid, 35, DIALOG_STYLE_MSGBOX, "{FFEF0D}Ошибка", "01", "Закрыть", "");
- SCM(playerid, COLOR_RED, "Введите /q(/quit) чтобы выйти.");
- Kick(playerid);
- return 1;
- }
- else
- {
- if(!strlen(inputtext) || strlen(inputtext) < 8 || strlen(inputtext) > 16)
- {
- SCM(playerid, COLOR_RED, "[Система] Ошибка: Минимальная длинна пароля 8 символов, максимальная 16.");
- }
- else
- {
- new Characters[][2] = {"1","2","3","4","5","6","7","8","9"};
- for(new i=0; i<sizeof(Characters); i++)
- {
- if(strfind(pInfo[playerid][NAME], Characters[i], true) != -1)
- {
- {
- SPD(playerid, 35, DIALOG_STYLE_MSGBOX, "{FFEF0D}Ошибка", "Ваш ник не должен содержать цифры. Измените его и повторите регистрацию", "Закрыть", "");
- SCM(playerid, COLOR_RED, "Введите /q(/quit) чтобы выйти.");
- Kick(playerid);
- return 1;
- }
- }
- }
- SetPVarString(playerid, "reg_pass", inputtext);
- SPD(playerid, 2, DIALOG_STYLE_INPUT, "{1472FF}Регстрация - Электронная почта", "{FFFFFF}Введите адрес Вашей электронной почты\nИспользуя его, вы сможете восстановить доступ к аккаунту\nв случае взлома или если забудете пароль.\n\nНа email мы вышлем ссылку. В течение 14 дней Вы можете\nперейти по ней для подтверждения почты.\n\nУбедитесь в правильности ввода и нажмите \"Далее\"", "Далее", "");
- }
- }
- }
- case 2:
- {
- if(!response)
- {
- }
- else
- {
- SPD(playerid, 3, DIALOG_STYLE_INPUT, "{1472FF}Регистрация - Реферал", "{FFFFFF}Если вы узнали о нашем сервере от своего друга\nкоторый тут играет, укажите его ник в поле ниже\n\n{C3FF1F}При достижении вами 4-го уровня вы оба получити вознаграждение", "Далее", "Пропустить");
- SetPVarString(playerid, "email", inputtext);
- }
- }
- case 3:
- {
- if(!response)
- {
- SCM(playerid, COLOR_GREY, "Нет реферала");
- SetPVarString(playerid, "referal" , "");
- SPD(playerid, 4, DIALOG_STYLE_MSGBOX, "{1472FF}Регистрация - Пол", "Выберите пол вашего персонажа", "Мужской", "Женский");
- }
- else
- {
- SetPVarString(playerid, "referal" , inputtext);
- SCM(playerid, COLOR_GREY, "Есть реферал");
- SPD(playerid, 4, DIALOG_STYLE_MSGBOX, "{1472FF}Регистрация - Пол", "Выберите пол вашего персонажа", "Мужской", "Женский");
- }
- }
- case 4:
- {
- if(!response)
- {
- SetPVarInt(playerid, "sex", 2);
- SCM(playerid, COLOR_GREY, "Вы выбрали Женский пол.");
- SPD(playerid, 5, DIALOG_STYLE_INPUT, "{1472FF}Регистрация - Возраст", "Укажите возраст вашего персонажа\nОт 18 до 50 Лет", "Далее", "");
- }
- else
- {
- SetPVarInt(playerid, "sex", 1);
- SCM(playerid, COLOR_GREY, "Вы выбрали Мужской пол.");
- SPD(playerid, 5, DIALOG_STYLE_INPUT, "{1472FF}Регистрация - Возраст", "Укажите возраст вашего персонажа\nОт 18 до 50 Лет", "Далее", "");
- }
- }
- case 5:
- {
- if(!response)
- {
- }
- else
- {
- new reg_age = strval(inputtext);
- SetPVarInt(playerid, "age", reg_age);
- SPD(playerid, 6, DIALOG_STYLE_INPUT, "{1472FF}Регистрация - О себе", "Укажите пару слов о своём персонаже\nВажно! Информация проверяется администрацией.", "Далее", "");
- }
- }
- case 6:
- {
- if(!response)
- {
- }
- else
- {
- SPD(playerid, 7, DIALOG_STYLE_MSGBOX, "{1472FF}Регистрация - Опыт игры","{FFFFFF}Вы впервые играете в GTA San Andreas Multiplayer (SAMP)?\nМы покажем вам дополнительные подсказки для вас.", "Новичок", "Уже играл");
- SetPVarString(playerid, "about", inputtext);
- }
- }
- case 7:
- {
- if(!response)
- {
- SetPVarInt(playerid, "newbie", 0);
- SCM(playerid, COLOR_GREY, "Вы выбрали - Уже играл");
- SPD(playerid, 8, DIALOG_STYLE_MSGBOX, "{1472FF}Регистрация - Правила сервера", rules, "Принять", "Отмена");
- }
- else
- {
- SetPVarInt(playerid, "newbie", 1);
- SCM(playerid, COLOR_GREY, "Вы выбрали - Новичок");
- SPD(playerid, 8, DIALOG_STYLE_MSGBOX, "{1472FF}Регистрация - Правила сервера", rules, "Принять", "Отмена");
- }
- }
- case 8:
- {
- if(!response)
- {
- SCM(playerid, COLOR_RED, "[Система] Ошибка: Для игры на нашем сервере вам необходимо согласится с правилами игры.");
- Kick(playerid);
- }
- else
- {
- //new query[256];
- new r_pass[32];
- new r_sex;
- new r_email[32];
- new r_referal[32];
- new r_age;
- new r_about[256];
- new r_newbie;
- GetPVarString(playerid, "reg_pass", r_pass, sizeof(r_pass));
- GetPVarString(playerid, "email", r_email, sizeof(r_email));
- GetPVarString(playerid, "referal", r_referal, sizeof(r_referal));
- r_sex = GetPVarInt(playerid, "sex");
- r_age = GetPVarInt(playerid, "age");
- GetPVarString(playerid, "about", r_about, sizeof(r_about));
- r_newbie = GetPVarInt(playerid, "newbie");
- format(query, sizeof(query), "INSERT INTO `accounts` (`login`,`password`,`email`,`referal`,`sex`,`age`,`about`,`newbie`) VALUES ('%s','%s','%s','%s','%d','%d','%s','%d')", pInfo[playerid][NAME],r_pass,r_email,r_referal,r_sex,r_age,r_about,r_newbie);
- mysql_tquery(cHandle, query, "OnPlayerRegistered", "i", playerid);
- }
- }
- case 9:
- {
- if(!response)
- {
- // Если нажали выход
- }
- else
- {
- SetPVarString(playerid, "l_pass", inputtext);
- //new query[128];
- format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `login` = '%s' AND `password` = '%s' LIMIT 1",playername(playerid), inputtext);
- mysql_tquery(cHandle, query, "OnPlayerLogin", "r", playername(playerid));
- }
- }
- }
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
- {
- SetPlayerPos(playerid, fX, fY, fZ);
- SetPlayerVirtualWorld(playerid, 0);
- SetPlayerInterior(playerid, 0);
- //return 0;
- }
- //====================================================================
- stock playername(playerid)
- {
- new pName[MAX_PLAYER_NAME +1];
- GetPlayerName(playerid, pName, sizeof(pName));
- return pName;
- }
- stock sendername(playerid)
- {
- new newname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, newname, sizeof(newname));
- return newname;
- }
- stock save_account(playerid)
- {
- new string[256];
- format(string, sizeof(string), "[SAVE ACCOUNT ON EXIT] User %s Money Ammount : %d", pInfo[playerid][NAME],pInfo[playerid][MONEY]);
- printf(string);
- //new query[256];
- format(query, sizeof(query), "UPDATE `accounts` SET `money` = '%d' WHERE `id` = '%d' LIMIT 1", pInfo[playerid][MONEY], pInfo[playerid][ID]);
- mysql_query(cHandle, query);
- }
- stock give_money(playerid, amount)
- {
- pInfo[playerid][MONEY] += amount;
- GivePlayerMoney(playerid, amount);
- }
- stock clear_player(playerid)
- {
- pInfo[playerid][MONEY] = 0;
- pInfo[playerid][ID] = 0;
- }
- stock LoadPlayerData(playerid)
- {
- new query[256];
- format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `login` = '%s'", playername(playerid));
- mysql_tquery(sql, query, "OnTest", "r", playerid);
- cache_get_value_name_int(0, "money", pInfo[playerid][MONEY]);
- }
- //====================================================================
- forward CheckPlayerExistance(playerid);
- public CheckPlayerExistance(playerid)
- {
- SetPlayerCameraPos(playerid, 1027.7542, -1075.3053, 109.6629);
- SetPlayerCameraLookAt(playerid, 1028.7198, -1075.5803, 109.6678);
- // в моем варианте камера будет на вид небоскребов Лос Сантоса
- //format(query, sizeof query, "SELECT * FROM `accounts` WHERE `login` = '%s'", pInfo[playerid][NAME]); // форматируем запрос с перебором таблицы accounts и поиском совпадения в поле name
- //mysql_tquery(sql, query, "PlayerExists", "ii", playerid, THREAD_TESTING);
- mysql_format(cHandle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `login` = '%e' LIMIT 1",pInfo[playerid][NAME]);
- // the variable 'query' contains now the formatted query (including the escaped string)
- mysql_tquery(cHandle, query, "PlayerExists");
- return 1;
- }
- forward PlayerExists(playerid);
- public PlayerExists(playerid)
- {
- if (cache_num_rows() < 1) // если найдено 0 совпадений, то игрок должен зарегистрироваться
- {
- SCM(playerid,COLOR_RED, "NOT REGISTERED");
- }
- else // ну, а если найдено - авторизация
- {
- SCM(playerid,COLOR_GREEN, "REGISTERED");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement