Fastik
Специалист
1. Что вам требуется : Написать БД, для мода 679 строк. (Если не ошибаюсь, там только рега на мускул.)
2. Цена вопроса : От 50 руб до договорной.
3. Связь: fastik57
Сам мод:
PHP:
/*
ELECTED - ROLE PLAY
НАПИСАН ПОЛНОСТЬЮ С НУЛЯ, НА ПЛАТФОРМЕ MYSQL R8 (r15)
АВТОР МОДА: Rubick
Версия мода: 0.0.1
Версия плагина MySQL: R8 (r15)
Версия плагина Regex: 0.2.1
Версия плагина SSCANF: 2.8.1
*/
/*
ГОТОВО В МОДЕ:
* РЕГИСТРАЦИЯ
ДАТА РАЗРАБОТКИ: ФЕВРАЛЬ 2013 ГОД
*/
/* Стандартная библиотека от разработчиков SA:MP 0.3x */
#include a_samp
/* Плагин MySQL версии R8 (r15) от бета тестера SA:MP - BlueG */
#include a_mysql
/* Командный процессор PCMD от разработчика Divine */
/* Плагин Regex для проверки расширений от разработчика Fro */
#include regex
/* Плагин SSCANF для установки проверок, оптимизация от автора: Y_LESS */
#include sscanf
/* Настройки учётной записи базы данных */
#define HOST "localhost"
#define USER "root"
#define BASE "Elected-RP"
#define PASS ""
/* Константы */
#define TABLE_PLAYERS "Players"
#define MODE_NAME "Elected Role Play"
#define Massive enum
#define WhileOfCheckThe if
#define Dialog ShowPlayerDialog
#define QFormat mysql_format
#define Query mysql_function_query
#define Letter SendClientMessage
#define Thread(%0)(%1) public %0(%1)
#define Void(%0)(%1) stock %0(%1)
#define Option(%0)(%1) forward %0(%1); public %0(%1)
#define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define v new
#define WHITE 0xFFFFFFFF
#define RED 0xF81414FF
#define LIGHT_BLUE 0x00c0FFFF
#define LIGHT_GREEN 0xC9FFABFF
/* Запуск сервера */
main();
/* Массив с таблицой игроков */
Massive SLAYER_PLAYERS
{
Password[32],
A_Password[32],
Ip[20],
Skin,
};
v Info[MAX_PLAYERS][SLAYER_PLAYERS];
Massive SLAYER_FACTIONS
{
Leader,
Member,
Rank,
}
v Faction[MAX_PLAYERS][SLAYER_FACTIONS];
/* Переменные */
static Cache[MAX_PLAYERS];
static SkinMan[] = {2,3,7,208,24,188};
static Text:RM_BOX;
static Text:R_BOX;
static Text:S_BOX;
static Text:E_BOX;
static Text:RM_TEXT;
static Text:L_TEXT;
static Text:R_TEXT;
static Text:S_TEXT;
static Text:E_TEXT;
static Text:C_BOX;
static Text:C_LEFT;
static Text:C_RIGHT;
static Text:C_CIRCLE;
static Text:C_MBOX;
static Text:C_MTEXT;
static connectionHandle;
static string[500];
static RegEx:checkPass;
static RegEx:checkMail;
/* Стандартные функции */
Thread(OnGameModeInit)()
{
RM_BOX = TextDrawCreate(411.500000, 5.875000, "usebox");
TextDrawLetterSize(RM_BOX, 0.000000, 2.016666);
TextDrawTextSize(RM_BOX, 236.500000, 0.000000);
TextDrawAlignment(RM_BOX, 1);
TextDrawColor(RM_BOX, 0);
TextDrawUseBox(RM_BOX, true);
TextDrawBoxColor(RM_BOX, 102);
TextDrawSetShadow(RM_BOX, 0);
TextDrawSetOutline(RM_BOX, 0);
TextDrawFont(RM_BOX, 0);
R_BOX = TextDrawCreate(411.500000, 29.062500, "usebox");
TextDrawLetterSize(R_BOX, 0.000000, 1.238888);
TextDrawTextSize(R_BOX, 236.500000, 0.000000);
TextDrawAlignment(R_BOX, 1);
TextDrawColor(R_BOX, 0);
TextDrawUseBox(R_BOX, true);
TextDrawBoxColor(R_BOX, 102);
TextDrawSetShadow(R_BOX, 0);
TextDrawSetOutline(R_BOX, 0);
TextDrawFont(R_BOX, 0);
S_BOX = TextDrawCreate(411.500000, 45.250000, "usebox");
TextDrawLetterSize(S_BOX, 0.000000, 1.093055);
TextDrawTextSize(S_BOX, 236.500000, 0.000000);
TextDrawAlignment(S_BOX, 1);
TextDrawColor(S_BOX, 0);
TextDrawUseBox(S_BOX, true);
TextDrawBoxColor(S_BOX, 102);
TextDrawSetShadow(S_BOX, 0);
TextDrawSetOutline(S_BOX, 0);
TextDrawFont(S_BOX, 0);
E_BOX = TextDrawCreate(412.000000, 60.125000, "usebox");
TextDrawLetterSize(E_BOX, 0.000000, 1.190277);
TextDrawTextSize(E_BOX, 236.500000, 0.000000);
TextDrawAlignment(E_BOX, 1);
TextDrawColor(E_BOX, 0);
TextDrawUseBox(E_BOX, true);
TextDrawBoxColor(E_BOX, 102);
TextDrawSetShadow(E_BOX, 0);
TextDrawSetOutline(E_BOX, 0);
TextDrawFont(E_BOX, 0);
RM_TEXT = TextDrawCreate(279.500000, 7.000000, "MAIN MENU");
TextDrawLetterSize(RM_TEXT, 0.449999, 1.600000);
TextDrawAlignment(RM_TEXT, 1);
TextDrawColor(RM_TEXT, -1);
TextDrawSetShadow(RM_TEXT, 0);
TextDrawSetOutline(RM_TEXT, 1);
TextDrawBackgroundColor(RM_TEXT, 51);
TextDrawFont(RM_TEXT, 1);
TextDrawSetProportional(RM_TEXT, 1);
L_TEXT = TextDrawCreate(306.500000, 25.812500, "LOGIN");
TextDrawLetterSize(L_TEXT, 0.449999, 1.600000);
TextDrawAlignment(L_TEXT, 1);
TextDrawColor(L_TEXT, -1);
TextDrawSetShadow(L_TEXT, 0);
TextDrawSetOutline(L_TEXT, 1);
TextDrawBackgroundColor(L_TEXT, 51);
TextDrawFont(L_TEXT, 1);
TextDrawSetProportional(L_TEXT, 1);
R_TEXT = TextDrawCreate(291.500000, 26.250000, "REGISTER");
TextDrawLetterSize(R_TEXT, 0.449999, 1.600000);
TextDrawAlignment(R_TEXT, 1);
TextDrawColor(R_TEXT, -1);
TextDrawSetShadow(R_TEXT, 0);
TextDrawSetOutline(R_TEXT, 1);
TextDrawBackgroundColor(R_TEXT, 51);
TextDrawFont(R_TEXT, 1);
TextDrawSetProportional(R_TEXT, 1);
S_TEXT = TextDrawCreate(292.000000, 42.000000, "SETTINGS");
TextDrawLetterSize(S_TEXT, 0.449999, 1.600000);
TextDrawAlignment(S_TEXT, 1);
TextDrawColor(S_TEXT, -1);
TextDrawSetShadow(S_TEXT, 0);
TextDrawSetOutline(S_TEXT, 1);
TextDrawBackgroundColor(S_TEXT, 51);
TextDrawFont(S_TEXT, 1);
TextDrawSetProportional(S_TEXT, 1);
E_TEXT = TextDrawCreate(311.500000, 57.312500, "EXIT");
TextDrawLetterSize(E_TEXT, 0.449999, 1.600000);
TextDrawAlignment(E_TEXT, 1);
TextDrawColor(E_TEXT, -1);
TextDrawSetShadow(E_TEXT, 0);
TextDrawSetOutline(E_TEXT, 1);
TextDrawBackgroundColor(E_TEXT, 51);
TextDrawFont(E_TEXT, 1);
TextDrawSetProportional(E_TEXT, 1);
C_BOX = TextDrawCreate(406.000000, 379.500000, "usebox");
TextDrawLetterSize(C_BOX, 0.000000, 2.994444);
TextDrawTextSize(C_BOX, 251.500000, 0.000000);
TextDrawAlignment(C_BOX, 1);
TextDrawColor(C_BOX, 0);
TextDrawUseBox(C_BOX, true);
TextDrawBoxColor(C_BOX, 102);
TextDrawSetShadow(C_BOX, 0);
TextDrawSetOutline(C_BOX, 0);
TextDrawFont(C_BOX, 0);
C_LEFT = TextDrawCreate(256.000000, 380.625000, "LD_BEAT:left");
TextDrawLetterSize(C_LEFT, 0.000000, 0.000000);
TextDrawTextSize(C_LEFT, 41.500000, 24.937500);
TextDrawAlignment(C_LEFT, 1);
TextDrawColor(C_LEFT, -1);
TextDrawSetShadow(C_LEFT, 0);
TextDrawSetOutline(C_LEFT, 0);
TextDrawFont(C_LEFT, 4);
C_RIGHT = TextDrawCreate(357.000000, 380.625000, "LD_BEAT:right");
TextDrawLetterSize(C_RIGHT, 0.000000, 0.000000);
TextDrawTextSize(C_RIGHT, 45.000000, 24.937500);
TextDrawAlignment(C_RIGHT, 1);
TextDrawColor(C_RIGHT, -1);
TextDrawSetShadow(C_RIGHT, 0);
TextDrawSetOutline(C_RIGHT, 0);
TextDrawFont(C_RIGHT, 4);
C_CIRCLE = TextDrawCreate(299.500000, 380.625000, "LD_BEAT:circle");
TextDrawLetterSize(C_CIRCLE, 0.000000, 0.000000);
TextDrawTextSize(C_CIRCLE, 55.500000, 24.937500);
TextDrawAlignment(C_CIRCLE, 1);
TextDrawColor(C_CIRCLE, -1);
TextDrawSetShadow(C_CIRCLE, 0);
TextDrawSetOutline(C_CIRCLE, 0);
TextDrawFont(C_CIRCLE, 4);
C_MBOX = TextDrawCreate(255.500000, 377.312500, "usebox");
TextDrawLetterSize(C_MBOX, 0.000000, -2.941666);
TextDrawTextSize(C_MBOX, 402.000000, 0.000000);
TextDrawAlignment(C_MBOX, 1);
TextDrawColor(C_MBOX, 0);
TextDrawUseBox(C_MBOX, true);
TextDrawBoxColor(C_MBOX, 102);
TextDrawSetShadow(C_MBOX, 0);
TextDrawSetOutline(C_MBOX, 0);
TextDrawFont(C_MBOX, 0);
C_MTEXT = TextDrawCreate(285.000000, 355.250000, "SELECT SKIN");
TextDrawLetterSize(C_MTEXT, 0.449999, 1.600000);
TextDrawAlignment(C_MTEXT, 1);
TextDrawColor(C_MTEXT, -1);
TextDrawSetShadow(C_MTEXT, 0);
TextDrawSetOutline(C_MTEXT, 1);
TextDrawBackgroundColor(C_MTEXT, 51);
TextDrawFont(C_MTEXT, 1);
TextDrawSetProportional(C_MTEXT, 1);
SetGameModeText("E-RP v0.0.1");
checkPass = regex_build("[A-Za-z0-9А-Яа-я]{6,25}");
checkMail = regex_build("[A-Z@.a-z]{10,32}");
connectionHandle = mysql_connect(HOST, USER, BASE, PASS);
TextDrawSetSelectable(RM_BOX, false);
TextDrawSetSelectable(RM_TEXT, false);
TextDrawSetSelectable(R_BOX, false);
TextDrawSetSelectable(S_BOX, false);
TextDrawSetSelectable(E_BOX, false);
TextDrawSetSelectable(C_BOX, false);
TextDrawSetSelectable(R_TEXT, true);
TextDrawSetSelectable(L_TEXT, true);
TextDrawSetSelectable(S_TEXT, true);
TextDrawSetSelectable(E_TEXT, true);
TextDrawSetSelectable(C_RIGHT,true);
TextDrawSetSelectable(C_LEFT, true);
TextDrawSetSelectable(C_CIRCLE, true);
return 1;
}
Thread(OnGameModeExit)()
{
mysql_close(connectionHandle);
TextDrawDestroy(RM_BOX);
TextDrawDestroy(R_BOX);
TextDrawDestroy(S_BOX);
TextDrawDestroy(E_BOX);
TextDrawDestroy(RM_TEXT);
TextDrawDestroy(S_TEXT);
TextDrawDestroy(E_TEXT);
TextDrawDestroy(C_BOX);
TextDrawDestroy(C_MBOX);
TextDrawDestroy(C_MTEXT);
TextDrawDestroy(C_RIGHT);
TextDrawDestroy(C_LEFT);
TextDrawDestroy(C_CIRCLE);
return 1;
}
Thread(OnPlayerConnect)(playerid) {
Cache[playerid] = cache_save();
GetPlayerVersion(playerid, string, sizeof(string)); WhileOfCheckThe(!strcmp(string,"0.3x-R1-2"))
{
}
else
{
SetTimer("OnPlayerKick", 1000, 0), Letter(playerid, RED, "В целях обеспечения безопасности сервера вам необходимо обновить клиентскую часть до: SA-MP 0.3x R1-2");
}
return 1;
}
Thread(OnPlayerDisconnect)(playerid) return OnPlayerSave(playerid);
Thread(OnPlayerRequestClass)(playerid, classid) return format(string, sizeof(string), "SELECT `Name` FROM `"TABLE_PLAYERS"` WHERE `Name` = '%s'", Name(playerid)), Query(connectionHandle, string, true, "OnPlayerCheck", "d", playerid);
Thread(OnPlayerSpawn)(playerid) return cache_delete(Cache[playerid]);
Thread(OnPlayerKeyStateChange)(playerid, newkeys, oldkeys)
{
WhileOfCheckThe(PRESSED(65536))
{
Dialog(playerid, 6, DIALOG_STYLE_LIST, "{FFFFFF}Меню", "{FFFFFF}1. Помощь по серверу", "Выбрать", "Выход");
}
WhileOfCheckThe(PRESSED(KEY_FIRE))
{
Letter(playerid, -1, "Запрещено атаковать на Role Play сервере!");
}
WhileOfCheckThe(PRESSED(262144))
{
Dialog(playerid, 20, DIALOG_STYLE_LIST, "{FFFFFF}Меню Администратора", "{FFFFFF}1. Создание объектов\n2. Выполнение SQL запросов\n3. Управление игроком", "Выбрать", "Выход");
}
return 1;
}
Thread(OnDialogResponse)(playerid, dialogid, response, listitem, inputtext[])
{
static numbers, giveplayerid;
switch(dialogid)
{
case 1:
{
WhileOfCheckThe(!strlen(inputtext)) return Dialog(playerid, 1, DIALOG_STYLE_INPUT,"{FFFFFF}Регистрация","\t{FFFFFF}Добро пожаловать на сервер!\n\t{FFFFFF}Используйте сложные комбинации символов в пароле.\n\n\t{FFFFFF}Данный аккаунт свободен.\n\tЧтобы зарегистрировать введите пароль:","Далее","Выход");
WhileOfCheckThe(!regex_match_exid(inputtext, checkPass)) return Dialog(playerid, 1, DIALOG_STYLE_INPUT, "{FFFFFF}Регистрация","\t{FFFFFF}Добро пожаловать на сервер!\n\t{FFFFFF}Используйте сложные комбинации символов в пароле.\n\n\t{FFFFFF}Данный аккаунт свободен.\n\tЧтобы зарегистрировать введите пароль:","Далее","Выход");
OnPlayerRegister(playerid, inputtext);
return 1;
}
case 2:
{
WhileOfCheckThe(!strlen(inputtext)) return Dialog(playerid, 2, DIALOG_STYLE_PASSWORD,"{FFFFFF}Вход в аккаунт","\t{FFFFFF}Добро пожаловать на сервер!\n\t{FFFFFF}Никому не передавайте ваш пароль.\n\n\t{FFFFFF}Данный аккаунт занят.\n\tЧтобы войти введите пароль:","Вход","Выход");
OnPlayerLogin(playerid, inputtext);
return 1;
}
case 3:
{
WhileOfCheckThe(!strlen(inputtext)) return Dialog(playerid, 4, DIALOG_STYLE_INPUT,"{FFFFFF}Электронная почта","\t{FFFFFF}Введите адрес вашей электронной почты\n\t{FFFFFF}Используя его вы сможете восстановить доступ к аккаунту\n\t{FFFFFF}в случае взлома или потеря пароля","Далее", "Назад");
WhileOfCheckThe(!regex_match_exid(inputtext, checkMail)) return Dialog(playerid, 4, DIALOG_STYLE_INPUT,"{FFFFFF}Электронная почта","\t{FFFFFF}Введите адрес вашей электронной почты\n\t{FFFFFF}Используя его вы сможете восстановить доступ к аккаунту\n\t{FFFFFF}в случае взлома или потерял пароя","Далее", "Назад");
}
case 4:
{
Dialog(playerid, 8, DIALOG_STYLE_MSGBOX, "{FFFFFF}Подтверждение E-Mail", "\t{FFFFFF}На указанный вами адрес электронной почты был выслан уникальный код.\n\t{FFFFFF}Подтверждение было введено с целью безопасности аккаунта.\n\n\t{FFFFFF}Для того чтобы свернуть игру используйте комбинацию Alt + Tab\n\n\t{FFFFFF}Введите код:\n\tВРЕМЕННО НЕДОСТУПНО! ЖМИТЕ 'ДАЛЕЕ'", "Далее", "Выход");
}
case 5:
{
WhileOfCheckThe(response)
{
Faction[playerid][Leader] = 0, Faction[playerid][Member] = 0;
OnPlayerSelectSkin(playerid);
}
else
{
Faction[playerid][Leader] = 0, Faction[playerid][Member] = 0;
OnPlayerSelectSkin(playerid);
}
}
case 6:
{
WhileOfCheckThe(listitem == 0)
{
Dialog(playerid, 7, DIALOG_STYLE_LIST, "{FFFFFF}Помощь по серверу", "{FFFFFF}1. Помощь по Role Play\n2. Помощь по фракциям\n3. Помощь по работам\n4. Помощь по домам\n5. Помощь по бизнесу", "Информация", "Выход");
}
else
{
Dialog(playerid, 6, DIALOG_STYLE_LIST, "{FFFFFF}Меню", "{FFFFFF}1. Помощь по серверу", "Выбрать", "Выход");
}
}
case 7:
{
WhileOfCheckThe(listitem == 0)
{
Dialog(playerid, 7, DIALOG_STYLE_MSGBOX, "{FFFFFF}Помощь по Role Play", "\t{FFFFFF}Role Play - это мир безграничных возможностей, каждый может отыграть свою роль\n\t{FFFFFF}так, как ему захочется.\n\n\t{FFFFFF}Существует множество вспомогательных команд для выполнения\n\t{FFFFFF}действий таких как: /me , /do , /try\n\n\t{FFFFFF}Role Play - это игра в которой вы можете испытать себя в роли полицейского, или грабителя\n\t{FFFFFF}Это целая жизнь, жизнь в игре!", "Назад", "Выход");
}
}
case 8:
{
Dialog(playerid, 5, DIALOG_STYLE_MSGBOX,"{FFFFFF}Указание пола","\t{FFFFFF}Укажите пол вашего персонажа","Мужской","Женский");
}
case 20:
{
WhileOfCheckThe(listitem == 0)
{
Dialog(playerid, 21, DIALOG_STYLE_LIST, "{FFFFFF}Создание объектов", "{FFFFFF}1. Добавить дом\n2. Добавить квартиру\n3. Добавить бизнес\n4. Добавить организацию\n5. Добавить банкомат\n6. Добавить таксофон\n7. Добавить телевышку\n8. Добавить радиовышку", "Создать", "Назад");
}
WhileOfCheckThe(listitem == 2)
{
Dialog(playerid, 23, DIALOG_STYLE_LIST, "{FFFFFF}Управлением игроком", "{FFFFFF}1. Установление организации", "Выбрать", "Назад");
}
else
{
Dialog(playerid, 20, DIALOG_STYLE_LIST, "{FFFFFF}Меню Администратора", "{FFFFFF}1. Создание объектов\n2. Выполнение SQL запросов\n3. Управление игроком", "Выбрать", "Выход");
}
}
case 23:
{
WhileOfCheckThe(listitem == 0)
{
WhileOfCheckThe(!strfind(inputtext,"|",(true)) || !strlen(inputtext)) return Dialog(playerid, 28, DIALOG_STYLE_INPUT, "{FFFFFF}Установление организации", "\t{FFFFFF}Введите ID игрока которого вы хотите назначить лидером\n\t{FFFFFF}Используйте: ID | Номер организации\n\t{FFFFFF}Например: 1|1", "Далее", "Назад");
sscanf(inputtext,"p<|>ii", giveplayerid, numbers);
WhileOfCheckThe(giveplayerid == INVALID_PLAYER_ID) return Dialog(playerid, 28, DIALOG_STYLE_INPUT, "{FFFFFF}Установление организации", "\t{FFFFFF}Введите ID игрока которого вы хотите назначить лидером\n\t{FFFFFF}Используйте: ID | Номер организации\n\t{FFFFFF}Например: 1|1", "Далее", "Назад");
WhileOfCheckThe(numbers < 1 || numbers > 20) return Dialog(playerid, 28, DIALOG_STYLE_INPUT, "{FFFFFF}Установление организации", "\t{FFFFFF}Введите ID игрока которого вы хотите назначить лидером\n\t{FFFFFF}Используйте: ID | Номер организации\n\t{FFFFFF}Например: 1|1", "Далее", "Назад");
Faction[giveplayerid][Leader] = numbers, Faction[giveplayerid][Member] = numbers, Faction[giveplayerid][Rank] = 10;
OnPlayerSelectSkin(playerid);
}
else
{
Dialog(playerid, 23, DIALOG_STYLE_LIST, "{FFFFFF}Управлением игроком", "{FFFFFF}1. Установление организации", "Выбрать", "Назад");
}
}
}
return 1;
}
Thread(OnPlayerClickTextDraw)(playerid, Text:clickedid)
{
WhileOfCheckThe(_:clickedid != INVALID_TEXT_DRAW)
{
v idx = GetPVarInt(playerid, "SelectSkin");
WhileOfCheckThe(clickedid == C_RIGHT)
{
idx++;
WhileOfCheckThe(idx >= sizeof(SkinMan)) idx = 0;
SetPVarInt(playerid, "SelectSkin", idx);
SetPlayerSkin(playerid, SkinMan[idx]);
Info[playerid][Skin] = GetPlayerSkin(playerid);
}
WhileOfCheckThe(clickedid == C_LEFT)
{
idx++;
WhileOfCheckThe(idx < 0) idx = (sizeof(SkinMan) - 1);
SetPVarInt(playerid, "SelectSkin", idx);
SetPlayerSkin(playerid, SkinMan[idx]);
Info[playerid][Skin] = GetPlayerSkin(playerid);
}
WhileOfCheckThe(clickedid == C_CIRCLE)
{
CancelSelectTextDraw(playerid);
WhileOfCheckTheSpawn(playerid);
SetPlayerSkin(playerid, Info[playerid][Skin]);
SpawnPlayer(playerid);
CancelSelectTextDraw(playerid);
TextDrawHideForPlayer(playerid, C_BOX);
TextDrawHideForPlayer(playerid, C_MBOX);
TextDrawHideForPlayer(playerid, C_MTEXT);
TextDrawHideForPlayer(playerid, C_RIGHT);
TextDrawHideForPlayer(playerid, C_LEFT);
TextDrawHideForPlayer(playerid, C_CIRCLE);
}
WhileOfCheckThe(clickedid == L_TEXT)
{
CancelSelectTextDraw(playerid);
TextDrawHideForPlayer(playerid, RM_BOX), TextDrawHideForPlayer(playerid, RM_TEXT), TextDrawHideForPlayer(playerid, L_TEXT), TextDrawHideForPlayer(playerid, R_BOX), TextDrawHideForPlayer(playerid, R_TEXT), TextDrawHideForPlayer(playerid, S_BOX), TextDrawHideForPlayer(playerid, E_BOX), TextDrawHideForPlayer(playerid, S_TEXT), TextDrawHideForPlayer(playerid, E_TEXT);
Dialog(playerid, 2, DIALOG_STYLE_PASSWORD, "{FFFFFF}Вход в аккаунт","\t{FFFFFF}Добро пожаловать на сервер!\n\t{FFFFFF}Никому не передавайте ваш пароль.\n\n\t{FFFFFF}Данный аккаунт занят.\n\tЧтобы войти введите пароль:","Вход","Выход");
}
WhileOfCheckThe(clickedid == R_TEXT)
{
CancelSelectTextDraw(playerid);
TextDrawHideForPlayer(playerid, RM_BOX), TextDrawHideForPlayer(playerid, RM_TEXT), TextDrawHideForPlayer(playerid, R_BOX), TextDrawHideForPlayer(playerid, R_TEXT), TextDrawHideForPlayer(playerid, S_BOX), TextDrawHideForPlayer(playerid, E_BOX), TextDrawHideForPlayer(playerid, S_TEXT), TextDrawHideForPlayer(playerid, E_TEXT);
Dialog(playerid, 1, DIALOG_STYLE_INPUT, "{FFFFFF}Регистрация","\t{FFFFFF}Добро пожаловать на сервер!\n\t{FFFFFF}Используйте сложные комбинации символов в пароле.\n\n\t{FFFFFF}Данный аккаунт свободен.\n\tЧтобы зарегистрировать введите пароль:","Далее","Выход");
}
WhileOfCheckThe(clickedid == S_TEXT)
{
CancelSelectTextDraw(playerid);
TextDrawHideForPlayer(playerid, RM_BOX), TextDrawHideForPlayer(playerid, RM_TEXT), TextDrawHideForPlayer(playerid, L_TEXT), TextDrawHideForPlayer(playerid, R_BOX), TextDrawHideForPlayer(playerid, R_TEXT), TextDrawHideForPlayer(playerid, S_BOX), TextDrawHideForPlayer(playerid, E_BOX), TextDrawHideForPlayer(playerid, S_TEXT), TextDrawHideForPlayer(playerid, E_TEXT);
}
WhileOfCheckThe(clickedid == E_TEXT)
{
CancelSelectTextDraw(playerid);
StopAudioStreamForPlayer(playerid);
TextDrawHideForPlayer(playerid, RM_BOX), TextDrawHideForPlayer(playerid, RM_TEXT), TextDrawHideForPlayer(playerid, L_TEXT), TextDrawHideForPlayer(playerid, R_BOX), TextDrawHideForPlayer(playerid, R_TEXT), TextDrawHideForPlayer(playerid, S_BOX), TextDrawHideForPlayer(playerid, E_BOX), TextDrawHideForPlayer(playerid, S_TEXT), TextDrawHideForPlayer(playerid, E_TEXT);
Letter(playerid, WHITE, "Вы были отсоединены с сервера.");
Letter(playerid, WHITE, "Используйте команду /q(uit) для того чтобы покинуть игру.");
SetTimer("OnPlayerKick", 5000, 0);
}
}
return 1;
}
Thread(OnPlayerPickUpPickup)(playerid, pickupid)
{
return 1;
}
/* Функции мода Elected Role Play */
Void(Name)(i) { v N[24]; GetPlayerName(i, N, 24); return N; }
Option(WhileOfCheckTheSpawn)(playerid)
{
WhileOfCheckThe(Faction[playerid][Leader] == 0 || Faction[playerid][Member] == 0)
{
TogglePlayerControllable(playerid, true);
SetPlayerVirtualWorld(playerid, 0);
SetPlayerInterior(playerid, 18);
SetPlayerPos(playerid, 1714.2014,-1644.7257,20.2236);
SetPlayerFacingAngle(playerid, 271.1392);
}
WhileOfCheckThe(Faction[playerid][Leader] == 1 || Faction[playerid][Member] == 1)
{
TogglePlayerControllable(playerid, true);
SetPlayerVirtualWorld(playerid, 0);
//SetPlayerPos(playerid, x,y,z);
}
return ;
}
Option(OnPlayerCheck)(playerid)
{
SpawnPlayer(playerid);
Letter(playerid, LIGHT_BLUE, "Добро пожаловать на "MODE_NAME"!");
InterpolateCameraPos(playerid, 1673.023925, -2006.905151, 90.566871, 1682.506713, -1721.867797, 57.926670, 1000);
InterpolateCameraLookAt(playerid, 1676.034057, -2003.654541, 88.248970, 1680.283569, -1717.403076, 58.277946, 1000);
static rows, fields;
cache_get_data(rows, fields);
WhileOfCheckThe(rows) TextDrawShowForPlayer(playerid, RM_BOX), TextDrawShowForPlayer(playerid, R_BOX), TextDrawShowForPlayer(playerid, S_BOX), TextDrawShowForPlayer(playerid, E_BOX), TextDrawShowForPlayer(playerid, L_TEXT), TextDrawShowForPlayer(playerid, RM_TEXT), TextDrawShowForPlayer(playerid, S_TEXT), TextDrawShowForPlayer(playerid, E_TEXT), SelectTextDraw(playerid, 0xA3B4C5FF);
else TextDrawShowForPlayer(playerid, RM_BOX), TextDrawShowForPlayer(playerid, R_BOX), TextDrawShowForPlayer(playerid, S_BOX), TextDrawShowForPlayer(playerid, E_BOX), TextDrawShowForPlayer(playerid, R_TEXT), TextDrawShowForPlayer(playerid, RM_TEXT), TextDrawShowForPlayer(playerid, S_TEXT), TextDrawShowForPlayer(playerid, E_TEXT), SelectTextDraw(playerid, 0xA3B4C5FF);
return 1;
}
Void(OnPlayerRegister)(i, password[])
{
format(string, sizeof(string), "INSERT INTO `"TABLE_PLAYERS"` (`Name`, `Password`) VALUES ('%s', '%s')", Name(i), password);
Query(connectionHandle, string, false, "OnPlayerRegistered", "d", i);
return 1;
}
Option(FinishRegister)(playerid)
{
WhileOfCheckThe(Faction[playerid][Leader] == 0 || Faction[playerid][Member] == 0)
{
Letter(playerid, WHITE, "Поздравляем! Вы успешно зарегистрировались на сервере!");
Letter(playerid, WHITE, "Желаем вам приятной игры на нашем сервере!");
Letter(playerid, WHITE, "Нажмите на клавишу '{00BFFF}Y{FFFFFF}' для отображения главного меню");
}
return 1;
}
Option(OnPlayerSelectSkin)(playerid)
{
StopAudioStreamForPlayer(playerid);
SetPlayerInterior(playerid, 3);
SetPlayerPos(playerid, -2673.8381,1399.7424,918.3516);
SetPlayerFacingAngle(playerid, 181.0);
SetPlayerCameraPos(playerid, -2673.2776,1394.3859,918.3516);
SetPlayerCameraLookAt(playerid, -2673.8381,1399.7424,918.3516);
SetPlayerVirtualWorld(playerid, 1);
TextDrawShowForPlayer(playerid, C_BOX);
TextDrawShowForPlayer(playerid, C_MBOX);
TextDrawShowForPlayer(playerid, C_MTEXT);
TextDrawShowForPlayer(playerid, C_RIGHT);
TextDrawShowForPlayer(playerid, C_LEFT);
TextDrawShowForPlayer(playerid, C_CIRCLE);
SelectTextDraw(playerid, 0xA3B4C5FF);
return 1;
}
Option(OnPlayerTextDrawSelectSkin)(playerid, sex) return QFormat(connectionHandle, string, sizeof(string), "INSERT INTO `"TABLE_PLAYERS"`(`Sex`) VALUES ('%e')", sex), Query(connectionHandle, string, false, "OnPlayerSelectSkin", "d", playerid);
Void(OnPlayerLogin)(i, password[]) return QFormat(connectionHandle, string, sizeof(string), "SELECT * FROM `"TABLE_PLAYERS"` WHERE `Name` = '%e' AND `Password` = '%e'", Name(i), password), Query(connectionHandle, string, true, "OnPlayerLogged", "ds", i, password);
Void(OnPlayerSave)(i) return QFormat(connectionHandle, string, sizeof(string), "%e WHERE `Name` = '%s'", string, Name(i)), Query(connectionHandle, string, false, "", "");
Option(OnPlayerRegistered)(playerid) return Dialog(playerid, 4, DIALOG_STYLE_INPUT, "{FFFFFF}Электронная почта","\t{FFFFFF}Введите адрес вашей электронной почты\n\t{FFFFFF}Используя его вы сможете восстановить доступ к аккаунту\n\t{FFFFFF}в случае взлома или потере пароля","Далее", "Назад");
Option(OnPlayerLogged)(i, password[])
{
static rows, fields;
cache_get_data(rows, fields);
WhileOfCheckThe(!rows)
{
WhileOfCheckThe(GetPVarInt(i,"WP") == 2) return Letter(i, RED, "Вы были кикнуты по причине ввода неверного пароля"), SetTimer("OnPlayerKick", 500, 0), StopAudioStreamForPlayer(i);
SetPVarInt(i,"WP", GetPVarInt(i,"WP")+1);
format(string, sizeof(string),"\t{FFFFFF}Неверный пароль.\n\n\t{FFFFFF}Нажмите 'Повтор' для повторного ввода пароля", 3 - GetPVarInt(i,"WP"));
Dialog(i, 2, DIALOG_STYLE_MSGBOX,"{FFFFFF}Ошибка", string, "Повтор","");
return 1;
}
cache_get_field_content(0, "Skin", string), Info[i][Skin] = strval(string);
TogglePlayerControllable(i, true);
SetPlayerVirtualWorld(i, 0);
SetPlayerInterior(i, 18);
SetPlayerPos(i, 1714.2014,-1644.7257,20.2236);
SetPlayerFacingAngle(i, 271.1392);
SpawnPlayer(i);
return 1;
}
Option(OnPlayerKick)(playerid) return Kick(playerid);
Последнее редактирование:
