MeTRoZLoN
Ученик
PHP:
Добавляем инклуд: #include <mxINI>//Файловая сис-ма сохранений
PHP:
#define SERVER_NAME "Server Name"//Название сервера
#define GAMEMODE_NAME "Gamemode Name"//Название мода
#define DIALOG_REGISTER 0//Регистрация
#define DIALOG_LOGIN 1//Логин
#define DIALOG_SEX 0//Cкин
#define DIALOG_RACE 0//Расса
#define DIALOG_PRAVILA_1 4//Правила(1)
#define DIALOG_PRAVILA_2 5//Правила(2)
#define DIALOG_PRAVILA_3 6//Правила(3)
#define DIALOG_PRAVILA_4 7//Правила(4)
PHP:
Цвета
#define COLOR_GREEN 0x33AA33FF
#define COLOR_LIGHTRED 0xFF6347FF
#define CIVIL_COLOR 0xFFFFFF00
#define COLOR_YELLOW2 0xF5DEB3AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFFF
PHP:
enum pInfo{
pKey[128],
pLevel,
pAdmin,
pReg,
pSex,
pSpawn,
pModel,
pChar
};
new PlayerInfo[MAX_PLAYERS][pInfo];
new Logged[MAX_PLAYERS];//Лог
PHP:
forward EmptyMessages(playerid, count);
forward OnPlayerRegister(playerid, password[]);
forward OnPlayerLogin(playerid, password[]);
forward OnPlayerSave(playerid);
forward SetupPlayerForClassSelection(playerid);
forward ServerSetPlayerPos(playerid, Float:x, Float:y, Float:z);
PHP:
Паблики
PHP:
public OnPlayerRequestClass(playerid, classid)
{
if(IsPlayerNPC(playerid)) return 1;//Защита от ботов
if(Logged[playerid] == 0)//Лог
{
new string[128],string1[512];
new PlayerName[40];
GetPlayerName(playerid, PlayerName, 40);
format(string, sizeof(string), "accounts/%s.ini", PlayerName);
SetPlayerCameraPos(playerid,1489.5111,-901.3726,81.8154);
SetPlayerCameraLookAt(playerid,1415.6288,-818.8901,81.9115);
EmptyMessages(playerid,9);
SendClientMessage(playerid,COLOR_GREEN,"Загрузка данных успешно {F81414}завершена.");
if(fexist(string))
{
format(string1, 512, "Привет,%s!\n\n\
Ты зашел на сервер свое название\n\
Этот ник уже зарегестрирован на сервере.\n\n\
Ник:%s\n\
Введи пароль и нажми 'Войти'", PlayerName,PlayerName);
ShowPlayerDialog(playerid, DIALOG_LOGIN , DIALOG_STYLE_INPUT, "Авторизация.", string1, "Войти", "Выйти");
}
else
{
new idx;
new result[256];
result = bigstr(PlayerName, idx);
if(!strlen(result))return 0;
if(result[0] == '[' && result[1] == 'M' && result[2] == 'N' && result[3] == ']')
{
SendClientMessage(playerid,COLOR_LIGHTRED,"Ники, начинающиеся на [MN] доступны только для администрации.");
Kick(playerid);
return 1;
}
format(string1, 512, "Привет,%s!\n\n\
Ты зашел на сервер свое название\n\
Этот ник еще не зарегестрирован на сервере.\n\n\
Ник:%s\n\
Придумай пароль и нажми 'Создать'", PlayerName,PlayerName);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Регистрация.", string1, "Ок", "Отмена");
}
return 1;
}
return 1;
}
PHP:
public OnPlayerConnect(playerid)
{
if(IsPlayerNPC(playerid))return 1;
Logged[playerid] = 0;
PlayerInfo[playerid][pReg] = 0;
PlayerInfo[playerid][pLevel] = 0;
PlayerInfo[playerid][pAdmin] = 0;
PlayerInfo[playerid][pSex] = 0;
PlayerInfo[playerid][pSpawn] = 0;
SendClientMessage(playerid,COLOR_LIGHTRED,"{FFA500}Идет загрузка данных...");
SetPlayerColor(playerid,CIVIL_COLOR);
return 1;
}
PHP:
public OnPlayerDisconnect(playerid, reason)
{
if(Logged[playerid] == 0)return 1;
return 1;
}
PHP:
public OnPlayerSpawn(playerid)
{
new string[128];
format(string,sizeof(string),"%d",Logged[playerid]);
if(Logged[playerid] == 1)
{
SendClientMessage(playerid, COLOR_YELLOW2, "1.");
if(PlayerInfo[playerid][pReg] == 0)
{
SendClientMessage(playerid, COLOR_YELLOW2, "2.");
TogglePlayerControllable(playerid, 0);
ServerSetPlayerPos(playerid,-1971.7006,137.9194,27.6875);
SetPlayerFacingAngle(playerid, 90.0);
EmptyMessages(playerid, 50);
SendClientMessage(playerid, COLOR_YELLOW2, "Вы успешно зарегистрировались! Чтобы продолжить, вам необходимо создать персонажа.");
EmptyMessages(playerid, 5);
ShowPlayerDialog(playerid, DIALOG_SEX , DIALOG_STYLE_MSGBOX, "Вы мужчина или женщина?", "Выбирете пол вашего персонажа.", "Мужчина", "Женщина");
return 1;
}
}
return 1;
}
PHP:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new string1[512],PlayerName[40];
GetPlayerName(playerid, PlayerName, 40);
if(dialogid == DIALOG_REGISTER) //
{
if(response)
{
if(!strlen(inputtext))
{
format(string1, 512, "Здарова,%s!\n\n\
Ты зашел на сервер cвое название\n\
Игровой мод: рега\n\
Этот ник еще не зарегестрирован на сервере.\n\n\
Ник:%s\n\
Придумай пароль и нажми 'Создать'", PlayerName,PlayerName);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Регистрация.", string1, "Ок", "Отмена");
return 1;
}
OnPlayerRegister(playerid, inputtext);
return 1;
}
else
{
format(string1, 512, "Привет,%s!\n\n\
Ты зашел на сервер свое название\n\
Игровой мод: рега\n\
Этот ник еще не зарегестрирован на сервере.\n\n\
Ник:%s\n\
Придумай пароль и нажми 'Создать'", PlayerName,PlayerName);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Регистрация.", string1, "Ок", "Отмена");
}
return 1;
}
//------------------------------------------------------------------------------
if(dialogid == DIALOG_LOGIN)
{
if(response)
{
if(!strlen(inputtext))
{
format(string1, 512, "Привет,%s!\n\n\
Ты зашел на сервер свое название\n\
Этот ник уже зарегестрирован на сервере.\n\n\
Ник:%s\n\
Введи пароль и нажми 'Войти'", PlayerName,PlayerName);
ShowPlayerDialog(playerid, DIALOG_LOGIN , DIALOG_STYLE_INPUT, "Авторизация.", string1, "Войти", "Выйти");
return 1;
}
OnPlayerLogin(playerid, inputtext);
return 1;
}
else
{
format(string1, 512, "Здарова,%s!\n\n\
Ты зашел на сервер свое название\n\
Этот ник уже зарегестрирован на сервере.\n\n\
Ник:%s\n\
Введи пароль и нажми 'Войти'", PlayerName,PlayerName);
ShowPlayerDialog(playerid, DIALOG_LOGIN , DIALOG_STYLE_INPUT, "Авторизация.", string1, "Войти", "Выйти");
return 1;
}
}
//------------------------------------------------------------------------------
else if(dialogid == DIALOG_SEX)// Выбор пола
{
if(response)
{
PlayerInfo[playerid][pSex] = 1;
SendClientMessage(playerid, COLOR_YELLOW2, "Отлично, вы мужчина!");
EmptyMessages(playerid, 9);
ShowPlayerDialog(playerid, DIALOG_RACE , DIALOG_STYLE_LIST, "Пожалуйста выберите расу вашего персонажа","Европеец\nАфриканец\nАзиат", "Дальше", "Выйти");
//return 1;
}
else
{
PlayerInfo[playerid][pSex] = 2;
PlayerInfo[playerid][pModel] = 41;
SetPlayerSkin(playerid, 41);
SendClientMessage(playerid, COLOR_YELLOW2, "Отлично, вы женщина!");
EmptyMessages(playerid, 9);
ShowPlayerDialog(playerid, DIALOG_RACE , DIALOG_STYLE_LIST, "Пожалуйста выберите расу вашего персонажа","Европеец\nАфриканец\nАзиат", "Дальше", "Выйти");
return 1;
}
}
//------------------------------------------------------------------------------
else if(dialogid == DIALOG_RACE) //Раса персонажа
{
if(response)
{
switch(listitem)
{
case 0:
{
SendClientMessage(playerid, COLOR_YELLOW2, "Раса вашего персонажа: европеец");
EmptyMessages(playerid, 9);
ShowPlayerDialog(playerid,DIALOG_PRAVILA_1,DIALOG_STYLE_MSGBOX,"Правила сервера","Если вы впервые на нашем сервере, то мы рекомендуем вам nознакомиться с основными правилами сервера.\
\nЭто не займет много времени, зато сможет указать начальные цели.\
\nЧтобы прочесть правила нажмите кнопку 'Читать'\nЕсли вы хотите сразу начать игру вберите кнопку\'Играть'","Читать","Играть");
if(PlayerInfo[playerid][pSex] == 1)
{
PlayerInfo[playerid][pModel] = 240;
SetPlayerSkin(playerid, 240);
}
else if(PlayerInfo[playerid][pSex] == 2)
{
PlayerInfo[playerid][pModel] = 93;
SetPlayerSkin(playerid, 93);
}
return 1;
}
case 1:
{
SendClientMessage(playerid, COLOR_YELLOW2, "Раса вашего персонажа: афроамериканец.");
EmptyMessages(playerid, 9);
ShowPlayerDialog(playerid,DIALOG_PRAVILA_1,DIALOG_STYLE_MSGBOX,"Правила сервера","Если вы впервые на нашем сервере, то мы рекомендуем вам nознакомиться с основными правилами сервера.\
\nЭто не займет много времени, зато сможет указать начальные цели.\
\nЧтобы прочесть правила нажмите кнопку 'Читать'\nЕсли вы хотите сразу начать игру вберите кнопку\'Играть'","Читать","Играть");
if(PlayerInfo[playerid][pSex] == 1)
{
PlayerInfo[playerid][pModel] = 21;
SetPlayerSkin(playerid, 21);
}
else if(PlayerInfo[playerid][pSex] == 2)
{
PlayerInfo[playerid][pModel] = 13;
SetPlayerSkin(playerid, 13);
}
return 1;
}
case 2:
{
SendClientMessage(playerid, COLOR_YELLOW2, "Раса вашего персонажа: азиат.");
EmptyMessages(playerid, 9);
ShowPlayerDialog(playerid,DIALOG_PRAVILA_1,DIALOG_STYLE_MSGBOX,"Правила сервера","Если вы впервые на нашем сервере, то мы рекомендуем вам nознакомиться с основными правилами сервера.\
\nЭто не займет много времени, зато сможет указать начальные цели.\
\nЧтобы прочесть правила нажмите кнопку 'Читать'\nЕсли вы хотите сразу начать игру вберите кнопку\'Играть'","Читать","Играть");
if(PlayerInfo[playerid][pSex] == 1)
{
PlayerInfo[playerid][pModel] = 170;
SetPlayerSkin(playerid, 170);
}
else if(PlayerInfo[playerid][pSex] == 2)
{
PlayerInfo[playerid][pModel] = 56;
SetPlayerSkin(playerid, 56);
}
return 1;
}
}
}
else
{
ShowPlayerDialog(playerid,DIALOG_RACE, DIALOG_STYLE_LIST, "Пожалуйста выберите расу вашего персонажа","Европеец\nАфриканец\nАзиат", "Дальше", "Выйти");
}
}
//------------------------------------------------------------------------------
else if(dialogid == DIALOG_PRAVILA_1)//tutorial
{
if(response)
{
ShowPlayerDialog(playerid,DIALOG_PRAVILA_2,DIALOG_STYLE_MSGBOX,"Правила регистрации","Запрещено:\n- Регистрация более одного аккаунта\n- Регистрация ника, содержащего\n - нецензурную лексику\n - оскорбления игроков\n - создание фейк-ников\n - рекламу\n - бессмысленные ники","Играть","Дальше");
return 1;
}
else
{
PlayerInfo[playerid][pReg] = 1;
PlayerInfo[playerid][pChar] = PlayerInfo[playerid][pModel];
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid,COLOR_GREEN,"Ты успешно зарегистрировался и вошел в игру.Осталось только создать персонажа.");
EmptyMessages(playerid,7);
OnPlayerSave(playerid);
}
}
//------------------------------------------------------------------------------
else if(dialogid == DIALOG_PRAVILA_2) //Регистрация: правила реги
{
if(response)
{
PlayerInfo[playerid][pReg] = 1;
PlayerInfo[playerid][pChar] = PlayerInfo[playerid][pModel];
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid,COLOR_GREEN,"Ты успешно зарегистрировался и вошел в игру.Осталось только создать персонажа.");
SendClientMessage(playerid,COLOR_YELLOW2, "** Чтобы получить права,едьте в автошколу. /kpk -> Основные локации -> Автошкола.");
EmptyMessages(playerid,7);
OnPlayerSave(playerid);
}
else
{
ShowPlayerDialog(playerid,DIALOG_PRAVILA_3,DIALOG_STYLE_MSGBOX,"Правила общения","Запрещены:\n- Ненормативная лексика\n- Капс (написание сообщения заглавными буквами)\n- Реклама сторонних игровых серверов\n- Угрозы другим игрокам\n- Оскорбление игроков сервера или родственников игрока\n- Флуд и многократное повторение одного и того же сообщения\n- Оффтоп в /ad и /report","Назад","Дальше");
return 1;
}
return 1;
}
//------------------------------------------------------------------------------
else if(dialogid == DIALOG_PRAVILA_3) //Регистрация: правила общения
{
if(response)
{
ShowPlayerDialog(playerid,DIALOG_PRAVILA_2,DIALOG_STYLE_MSGBOX,"Правила регистрации","Запрещено:\n- Регистрация более одного аккаунта\n- Регистрация ника, содержащего\n - нецензурную лексику\n - оскорбления игроков\n - создание фейк-ников\n - рекламу\n - бессмысленные ники","Играть","Дальше");
return 1;
}
else
{
ShowPlayerDialog(playerid,DIALOG_PRAVILA_4,DIALOG_STYLE_MSGBOX,"Игровой процесс","Запрещены:\n- Использование читерских программ (читов, скриптов, модов)\n- Простой на месте более 15 минут (АФК)\n- Респкилл (убийство игрока на месте его появления)\n- Финансовые махинации и срыв мероприятий\n- Попытка или взлом сервера или аккаунтов пользователей\n- Использование багов сервера\n- Использование АФК при уход от погони/смерти\n- ДБ(убийство из транспорта) и ДМ(постоянные убийства)","Назад","Играть");
return 1;
}
}
//------------------------------------------------------------------------------
else if(dialogid == DIALOG_PRAVILA_4) //Регистрация: игровой процесс
{
if(response)
{
ShowPlayerDialog(playerid,DIALOG_PRAVILA_3,DIALOG_STYLE_MSGBOX,"Правила общения","Запрещены:\n- Ненормативная лексика\n- Капс (написание сообщения заглавными буквами)\n- Реклама сторонних игровых серверов\n- Угрозы другим игрокам\n- Оскорбление игроков сервера или родственников игрока\n- Флуд и многократное повторение одного и того же сообщения\n- Оффтоп в /ad и /report","Назад","Дальше");
return 1;
}
else
{
PlayerInfo[playerid][pReg] = 1;
PlayerInfo[playerid][pChar] = PlayerInfo[playerid][pModel];
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid,COLOR_GREEN,"Ты успешно зарегистрировался и вошел в игру.Осталось только создать персонажа.");
SendClientMessage(playerid,COLOR_YELLOW2, "** Чтобы получить права,едьте в автошколу. /kpk -> Основные локации -> Автошкола.");
EmptyMessages(playerid,7);
OnPlayerSave(playerid);
}
}
return 1;
}
PHP:
Новые паблики
PHP:
public OnPlayerRegister(playerid, password[])
{
new string[255], PlayerName[40];
GetPlayerName(playerid, PlayerName, 40);
format(string, 64, "accounts/%s.ini", PlayerName);
new iniFile = ini_createFile(string);
if(iniFile < 0) iniFile = ini_openFile(string);
ini_setString(iniFile, "Password", password);
ini_setInteger(iniFile, "Level", 0);
ini_setInteger(iniFile, "AdminLevel", 0);
ini_setInteger(iniFile, "Reg", 0);
ini_setInteger(iniFile, "Sex", 0);
ini_setInteger(iniFile, "Age", 0);
ini_setInteger(iniFile, "Spawn", 0);
ini_closeFile(iniFile);
OnPlayerLogin(playerid, password);
return 1;
}
PHP:
public OnPlayerLogin(playerid, password[])
{
new string[512], PlayerName[40], Password[32];
GetPlayerName(playerid, PlayerName, 40);
format(string, 64, "accounts/%s.ini", PlayerName);
if(fexist(string))
{
new iniFile = ini_openFile (string);
ini_getString(iniFile, "Password", Password);
if(!strcmp(Password, password, true))
{
ini_getInteger(iniFile, "Level", PlayerInfo[playerid][pLevel]);
ini_getInteger(iniFile, "AdminLevel", PlayerInfo[playerid][pAdmin]);
ini_getInteger(iniFile, "Reg", PlayerInfo[playerid][pReg]);
format(string,sizeof(string),"Регистрация %d .",PlayerInfo[playerid][pReg]);
SendClientMessage(playerid,COLOR_YELLOW,string);
ini_getInteger(iniFile, "Sex", PlayerInfo[playerid][pSex]);
SetPVarInt(playerid,"Sex", PlayerInfo[playerid][pSex]);
ini_getInteger(iniFile, "Spawn", PlayerInfo[playerid][pSpawn]);
ini_closeFile(iniFile);
EmptyMessages(playerid,50);
SendClientMessage(playerid,COLOR_YELLOW2,"Добро пожаловать на сервер свое название.Желаем вам приятной игры!");
SendClientMessage(playerid,COLOR_GREEN,"Аккаунт успешно загружен.");
Logged[playerid] = 1;
SpawnPlayer(playerid);
return 1;
}
else
{
ini_closeFile(iniFile);
SendClientMessage(playerid,COLOR_WHITE,"Сервер: Неверный пароль");
format(string, 512, "Здарова, %s!\n\n\
Ты зашел на сервер свое название\n\
Этот ник уже зарегестрирован на сервере.\n\n\
Ник: %s\n\
Введи пароль и нажми 'Войти'", PlayerName,PlayerName);
ShowPlayerDialog(playerid, DIALOG_LOGIN , DIALOG_STYLE_INPUT, "Авторизация.", string, "Войти", "Выйти");
Logged[playerid] = 0;
return 1;
}
}
else
{
SendClientMessage(playerid,COLOR_LIGHTRED,"Аккаунт не найден!");
}
return 1;
}
PHP:
public SetupPlayerForClassSelection(playerid)
{
SetPlayerInterior(playerid,3);
ServerSetPlayerPos(playerid,-2654.4,1424.2,912.4);
SetPlayerFacingAngle(playerid, 90.0);
SetPlayerCameraPos(playerid,-2654.4-2.0,1424.2,912.4+0.8);
SetPlayerCameraLookAt(playerid,-2654.4,1424.2,912.4+0.2);
}
public ServerSetPlayerPos(playerid, Float:x, Float:y, Float:z)
{
SetPlayerPos(playerid, x, y, z);
return 1;
}
PHP:
public OnPlayerSave(playerid)
{
new string[128], PlayerName[40];
GetPlayerName(playerid, PlayerName, 40);
format(string, sizeof(string), "accounts/%s.ini", PlayerName);
new iniFile = ini_openFile (string);
ini_setInteger(iniFile, "Reg", PlayerInfo[playerid][pReg]);
ini_setInteger(iniFile, "Level", PlayerInfo[playerid][pLevel]);
ini_setInteger(iniFile, "AdminLevel", PlayerInfo[playerid][pAdmin]);
ini_setInteger(iniFile, "Sex", PlayerInfo[playerid][pSex]);
ini_setInteger(iniFile, "Spawn", PlayerInfo[playerid][pSpawn]);
ini_closeFile(iniFile);
return 1;
}
PHP:
public EmptyMessages(playerid, count)
{
for (new i = 0; i < count; i++)
{
SendClientMessage(playerid,COLOR_GREEN, "Подключение к порту {F81414}127.0.0.1:7777\r");
SendClientMessage(playerid,COLOR_GREEN, "Подключился. {F81414}Загрузка Игры\r");
SendClientMessage(playerid,COLOR_GREEN, "Подключился к {F81414}СА-МП 0.3e Сервер");
SendClientMessage(playerid,COLOR_GREEN, "Мод: {F81414}NeWLiFe|R/rp|");
SendClientMessage(playerid,COLOR_GREEN, "Автор и главный администратор сервера {F81414}свое название\r");
SendClientMessage(playerid,COLOR_GREEN, "Версия сервера {F81414}0.0.1\r");
SendClientMessage(playerid,COLOR_GREEN, "Добро пожаловать в {F81414}свое название ");
SendClientMessage(playerid,COLOR_GREEN, "Приятной вам {F81414}игры");
SendClientMessage(playerid,COLOR_GREEN, "Данные были {F81414}сохранены");
}
}
PHP:
добавляем stock
PHP:
stock bigstr(const string[], &idx)
{
new length = strlen(string);
while ((idx < length) && (string[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[128];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = string[idx];
idx++;
}
result[idx - offset] = EOS;
return result;
}
Последнее редактирование:
