Код: Выделить всё
#include "mxINI"
Код: Выделить всё
#include <mxINI>
Теперь создадим следующие переменные. Ко всем new:
Код: Выделить всё
new sendername[MAX_PLAYER_NAME];
enum pInfo {
pMoney,
pPassword[33],
pAdmin,
pSkin,
pEmail[64]
}
new Player[MAX_PLAYERS][pInfo];
Код: Выделить всё
new Rules[][] = { // Страница 1
{"1. Игровой процесс\n"},
{"Запрещено использование любых сторонних программ, скриптов и читов.\n"},
{"Запрещено использование багов (ошибок, недоработок сервера и/или игры).\n"},
{"Использовать ESC (паузу) в целях ухода от погони или смерти.\n"},
{"Убивать игроков на спавне (место появления при входе на сервер/возрождения после смерти).\n"},
{"Злоупотребление игровыми возможностями для создания неудобств игрокам.\n\n"},
{"2. Ник в игре\n"},
{"Запрещено использовать ники, содержащие нецензурные или оскорбительные слова.\n"},
}
new Rules_2[][] = { // Страница 2
{"3. Чат\n"},
{"Запрещено ругательство, оскорбления или нецензурная речь.\n"},
{"Угрозы игрокам, не относящиеся к игровому процессу.\n"},
{"Писать сообщения заглавными буквами.\n"},
{"Писать одно и тоже сообщение слишком часто или посылать бессмысленные наборы букв (флуд).\n"},
{"Реклама сторонних ресурсов.\n\n"},
{"4. Администрация сервера\n"},
{"Необходимо сообщать администрации о каких либо нарушениях из данных правил.\n"},
{"Администрация самостоятельно выбирает штрафные санкции для каждого из случаев.\n"},
{"Запрещено препятствовать администрации в работе.\n"},
{"5. Торговля.\n"},
{"Запрещены любые махинации реальными деньгами.\n"},
{"Запрещена продажа/покупка чего-либо за реальные деньги.\n"},
{"Запрещен обмен реальных предметов в любой форме на игровые.\n"},
{"Запрещен обмен чего-либо между игровыми серверами (например, здесь ты мне даёшь машину бесплатно,\n а на таком-то серве я тебе дом).\n"},
};
Код: Выделить всё
if(GetPVarInt(playerid, "Logged") == 1) return SpawnPlayer(playerid);
SetPlayerInterior(playerid,0);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
GetPlayerName(playerid, sendername, sizeof(sendername));
new str[320], small[150];
switch(GetPVarInt(playerid, "Account")) {
case 0: {
format(small, sizeof(small), "");
strcat(str, small);
format(small, sizeof(small), "Добро пожаловать на сервер "SPawn Forum"!\nЭтот аккаунт ещё не зарегистрирован\n\n• Длина пароля от 6 до 15 символов\n• Пароль должен состоять только из букв английского алфавита\n\nПридумайте пароль:");
strcat(str, small);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", str, "Готово", "Отмена");
}
case 1:
ShowPlayerDialog(playerid, 5, DIALOG_STYLE_INPUT, "Вход", Добро пожаловать на сервер "SPawn Forum"! Этот аккаунт уже\nзарегистрирован. Введите свой пароль:, "Войти", "Отмена");
}
return true;
Код: Выделить всё
new string[42];
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "players/%s.ini", sendername);
if(fexist(string)) SetPVarInt(playerid, "Account",1);
else SetPVarInt(playerid, "Account",0);
return true;
Код: Выделить всё
if(GetPVarInt(playerid, "Logged") == 1) SavePlayer(playerid);
return true;
Код: Выделить всё
new string[128];
switch(dialogid) {
case 1: {
if(!response) return Kick(playerid);
RegisterPlayer(playerid, inputtext);
}
case 2: {
if(!response) {
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "players/%s.ini",sendername);
fremove(string);
return true;
}
new Rules_2_str[1000];
format(Rules_2_str, sizeof(Rules_2_str), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",Rules_2[0],Rules_2[1],Rules_2[2],Rules_2[3],Rules_2[4],Rules_2[5],Rules_2[6],Rules_2[7],Rules_2[8],Rules_2[9],Rules_2[10],Rules_2[11],Rules_2[12],Rules_2[13],Rules_2[14],Rules_2[15],Rules_2[16],Rules_2[17],Rules_2[18],Rules_2[19],Rules_2[20],Rules_2[21]);
ShowPlayerDialog(playerid, 3, DIALOG_STYLE_MSGBOX, "Правила сервера", Rules_2_str, "Согласен", "Выйти");
}
case 3: {
if(!response) {
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "players/%s.ini",sendername);
fremove(string);
return true;
}
ShowPlayerDialog(playerid, 4, DIALOG_STYLE_INPUT, "{FFFFFF}• Электронная почта •", "{FFFFFF}Пожалуйста введите действующий адрес электронной почты.\nЕсли вы забудите пароль на него будет выслан новый", "Готово", "");
}
case 4: {
if(!response) return Kick(playerid);
strmid(Player[playerid][pEmail],inputtext,0,strlen(inputtext),255);
GetPlayerName(playerid, sendername, sizeof(sendername));
new str[186];
ShowPlayerDialog(playerid, 5, DIALOG_STYLE_INPUT, "Вход", Добро пожаловать на сервер "SPawn Forum"! Этот аккаунт уже\nзарегистрирован. Введите свой пароль:, "Войти", "Отмена");
}
case 5: {
if(!response) return Kick(playerid);
LoginPlayer(playerid, inputtext);
}
}
Код: Выделить всё
stock RegisterPlayer(playerid, inputtext[]) {
if(!IsPlayerConnected(playerid)) return true;
new string[40];
GetPlayerName(playerid, sendername, sizeof(sendername));
Player[playerid][pMoney] = 500;
Player[playerid][pAdmin] = 0;
format(string,sizeof(string), "players/%s.ini", sendername);
new accountFile = ini_createFile(string);
if(accountFile < 0) {
accountFile = ini_openFile(string);
}
if(accountFile >= 0) {
strmid(Player[playerid][pPassword],inputtext,0,strlen(inputtext),255);
ini_setString(accountFile,"Password",Player[playerid][pPassword]);
ini_closeFile(accountFile);
}
new Rules_str[1000];
format(Rules_str, sizeof(Rules_str), "{FFFFFF}%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",Rules[0],Rules[1],Rules[2],Rules[3],Rules[4],Rules[5],Rules[6],Rules[7],Rules[8],Rules[9],Rules[10],Rules[11],Rules[12],Rules[13],Rules[14],Rules[15],Rules[16]);
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_MSGBOX, "Правила сервера", Rules_str, "Согласен", "Выйти");
return true;
}
stock LoginPlayer(playerid, inputtext[]) {
new string[40],pass[32];
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string,sizeof(string), "players/%s.ini", sendername);
new File = ini_openFile(string);
ini_getString(File,"Password",pass,32);
if(strcmp(pass, inputtext, true) != 0) {
Kick(playerid);
} else {
ini_getInteger(File, "Money", Player[playerid][pMoney]);
ini_getInteger(File, "Admin", Player[playerid][pAdmin]);
ini_getInteger(File, "Skin", Player[playerid][pSkin]);
ini_getString(File, "Email", Player[playerid][pEmail], 64);
SpawnPlayer(playerid);
SetPVarInt(playerid, "Logged", 1);
}
return 1;
}
stock SavePlayer(playerid) {
if(!IsPlayerConnected(playerid) && GetPVarInt(playerid, "Logged") == 0) return true;
new string[40];
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string,sizeof(string), "players/%s.ini", sendername);
new File = ini_openFile(string);
ini_setInteger(File, "Money", Player[playerid][pMoney]);
ini_setInteger(File,"Admin", Player[playerid][pAdmin]);
ini_setInteger(File,"Skin", Player[playerid][pSkin]);
ini_setString(File,"Email", Player[playerid][pEmail]);
ini_closeFile(File);
return 1;
}
Переделал: danilasar (я)