Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////////
- // Система регистраций by kaZax //
- // Создайте папку Accounts в scriptfiles //
- // Команда вызова меню /аккаунт //
- // Сохраняет: //
- // - Пароль //
- // - Деньги //
- // - Убийства //
- // - Смерти //
- // - Жизнь //
- // - Броня //
- // kRegister System © SAMP-RU.ORG //
- // 20.06.2013 03:56 //
- //////////////////////////////////////////////
- #include <a_samp>
- #include <mxINI>
- #define FILTERSCRIPT
- #define data "Accounts/%s.ini"
- #define ServerName "РУССКИЙ ДМ СЕРВЕР"
- #define DIALOG_LOGIN 4500
- #define DIALOG_REGISTER 4501
- #define DIALOG_ACCOUNT 4502
- #define DIALOG_SWNICK 4503
- #define DIALOG_SWPASS 4504
- #define green 0x22FF22FF
- #define red 0xFF2222FF
- #define infocolor 0x00BBFFFF
- enum Data
- {
- Pass,
- Cash,
- Kills,
- Deaths,
- Float:Health,
- Float:Armour,
- bool:Logged,
- Text:Stats
- };
- new PlayerData[MAX_PLAYERS][Data];
- public OnFilterScriptInit()
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- PlayerData[i][Stats] = TextDrawCreate(490.000000, 413.000000, " ");
- TextDrawFont(PlayerData[i][Stats] , 2);
- TextDrawLetterSize(PlayerData[i][Stats] , 0.3, 2.8000000000000003);
- TextDrawColor(PlayerData[i][Stats] ,0xFFFFFFFF);
- TextDrawSetOutline(PlayerData[i][Stats] , 1);
- TextDrawSetProportional(PlayerData[i][Stats] , 1);
- TextDrawSetShadow(PlayerData[i][Stats] , 1);
- }
- print("kRegisterSystem Loaded");
- return true;
- }
- public OnFilterScriptExit()
- {
- print("kRegisterSystem Unloaded");
- return true;
- }
- public OnPlayerConnect(playerid)
- {
- PlayerData[playerid][Cash]=0;
- PlayerData[playerid][Kills]=0;
- PlayerData[playerid][Deaths]=0;
- PlayerData[playerid][Health]=100;
- PlayerData[playerid][Armour]=0.0;
- if(fexist(userdata(playerid)))
- {
- new file = ini_openFile(userdata(playerid));
- ini_getInteger(file,"Pass",PlayerData[playerid][Pass]);
- ini_getInteger(file,"Cash",PlayerData[playerid][Cash]);
- ini_getInteger(file,"Kills",PlayerData[playerid][Kills]);
- ini_getInteger(file,"Deaths",PlayerData[playerid][Deaths]);
- ini_getFloat(file,"Health",PlayerData[playerid][Health]);
- ini_getFloat(file,"Armour",PlayerData[playerid][Armour]);
- ini_closeFile(file);
- new DialogStr[256];
- format(DialogStr,256,"{FFFFFF}Добро пожаловать на %s !\nВведите свой пароль для входа в игру.",ServerName);
- ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Авторизация",DialogStr,"Войти","Отмена");
- }
- else
- {
- new DialogStr[256];
- format(DialogStr,256,"{FFFFFF}Добро пожаловать на %s !\nВведите пароль для регистраций на сервере:",ServerName);
- ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Регистрация",DialogStr,"Ввести","Отмена");
- }
- return true;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- SavePlayerData(playerid);
- return true;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(!strcmp(cmdtext, "/аккаунт", true))
- {
- ShowPlayerDialog(playerid,DIALOG_ACCOUNT,DIALOG_STYLE_LIST,"Меню аккаунта","[1] Сменить ник\r\n[2] Сменить пароль","Выбрать", "Отмена");
- return true;
- }
- return false;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- PlayerData[playerid][Deaths]++,
- UpdateStats(playerid);
- if ( killerid == 0xFFFF ) return true ;
- SetPlayerScore(killerid, GetPlayerScore(killerid) + 1 ),
- UpdateStats(killerid);
- return true;
- }
- public OnPlayerSpawn(playerid)
- {
- if(PlayerData[playerid][Logged] == false)
- {
- new str[128];
- format(str,128,"Игрок %s был кикнут. (Не залогинен)",name(playerid));
- SendClientMessageToAll(red,str);
- Kick(playerid);
- }
- return true;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == DIALOG_LOGIN)
- {
- if(!response)
- {
- new str[128];
- format(str,128,"Игрок %s был кикнут.(Отказ от логина)",name(playerid));
- print(str);
- SendClientMessageToAll(red,str);
- Kick(playerid);
- }
- else
- {
- if(hash(inputtext) == PlayerData[playerid][Pass])
- {
- SetPlayerMoney(playerid,PlayerData[playerid][Cash]);
- SetPlayerScore(playerid,PlayerData[playerid][Kills]);
- SetPlayerHealth(playerid,PlayerData[playerid][Health]);
- SetPlayerArmour(playerid,PlayerData[playerid][Armour]);
- TextDrawShowForPlayer(playerid,PlayerData[playerid][Stats]);
- PlayerData[playerid][Logged] = true;
- }
- else
- {
- new DialogStr[256];
- format(DialogStr,256,"\r{FFFFFF}Добро пожаловать на %s !\n\rВведите свой пароль для входа в игру. \n\r{FF0000}Не правильный пароль!",ServerName);
- ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Авторизация",DialogStr,"Войти","Отмена");
- }
- }
- }
- if(dialogid == DIALOG_REGISTER)
- {
- if(!response)
- {
- new str[128];
- format(str,128,"Игрок %s был кикнут.(Отказ от регистраций)",name(playerid));
- print(str);
- SendClientMessageToAll(red,str);
- Kick(playerid);
- }
- else
- {
- new str[128];
- format(str,128,"Успешная регистрация! Ваш пароль: %s",inputtext);
- SendClientMessage(playerid,infocolor,str);
- new file = ini_createFile(userdata(playerid));
- if(file < 0)file = ini_openFile(userdata(playerid));
- if(file >= 0)
- {
- ini_setInteger(file,"Pass",hash(inputtext));
- ini_closeFile(file);
- }
- PlayerData[playerid][Logged] = true;
- }
- }
- if(dialogid == DIALOG_ACCOUNT)
- {
- if(response)
- {
- if(listitem == 0)ShowPlayerDialog(playerid,DIALOG_SWNICK,DIALOG_STYLE_INPUT,"Смена ника","Введите новый ник:","Ввести","Отмена");
- if(listitem == 1)ShowPlayerDialog(playerid,DIALOG_SWPASS,DIALOG_STYLE_INPUT,"Смена пароля","Введите новый пароль:","Ввести","Отмена");
- }
- }
- if(dialogid == DIALOG_SWNICK)
- {
- if(response)
- {
- new nick[64],str[128];
- format(nick,64,"/Accounts/%s.ini",inputtext);
- if(fexist(nick))return ShowPlayerDialog(playerid, DIALOG_SWNICK,DIALOG_STYLE_INPUT,"Смена ника","Этот ник занят!\nВведите другой ник:","Сменить","Отмена");
- fcopytextfile(userdata(playerid),nick);
- format(nick,64,"/Accounts/%s.ini",name(playerid));
- fremove(nick);
- format(str,128,"Игрок %s изменил свой ник на \"%s\"",name(playerid),inputtext);
- SendClientMessageToAll(infocolor,str);
- print(str);
- SendClientMessage(playerid,infocolor,"Перезайди в игру с новым ником!");
- return Kick(playerid);
- }
- }
- if(dialogid == DIALOG_SWPASS)
- {
- if(response)
- {
- PlayerData[playerid][Pass] = hash(inputtext);
- new str[128];
- format(str,128,"Вы изменили свой пароль на \"%s\" ",inputtext);
- SendClientMessage(playerid,infocolor,str);
- }
- }
- return 0;
- }
- stock SavePlayerData(playerid)
- {
- if(PlayerData[playerid][Logged])
- {
- PlayerData[playerid][Cash] = GetPlayerMoney(playerid);
- PlayerData[playerid][Kills] = GetPlayerScore(playerid);
- GetPlayerHealth(playerid,PlayerData[playerid][Health]);
- GetPlayerArmour(playerid,PlayerData[playerid][Armour]);
- new file = ini_openFile(userdata(playerid));
- if(file >= 0)
- {
- ini_setInteger(file,"Pass",PlayerData[playerid][Pass]);
- ini_setInteger(file,"Cash",PlayerData[playerid][Cash]);
- ini_setInteger(file,"Kills",PlayerData[playerid][Kills]);
- ini_setInteger(file,"Deaths",PlayerData[playerid][Deaths]);
- ini_setFloat(file,"Health",PlayerData[playerid][Health]);
- ini_setFloat(file,"Armour",PlayerData[playerid][Armour]);
- ini_closeFile(file);
- }
- }
- }
- stock StripNewLine(string[]) {
- new len = strlen(string);
- if (string[0]==0) return ;
- if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {
- string[len - 1] = 0;
- if (string[0]==0) return ;
- if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
- }
- }
- stock fcopytextfile(oldname[],newname[])
- {
- new File:ohnd,File:nhnd;
- if (!fexist(oldname)) return false;
- ohnd=fopen(oldname,io_read);
- if (!ohnd) return false;
- nhnd=fopen(newname,io_write);
- if (!nhnd) {
- fclose(ohnd);
- return false;
- }
- new tmpres[255];
- while (fread(ohnd,tmpres)) {
- StripNewLine(tmpres);
- format(tmpres,sizeof(tmpres),"%s\r\n",tmpres);
- fwrite(nhnd,tmpres);
- }
- fclose(ohnd);
- fclose(nhnd);
- return true;
- }
- stock UpdateStats(playerid)
- {
- new str[64];
- format(str,64,"Kills: %d Deaths: %d",GetPlayerScore(playerid),PlayerData[playerid][Deaths]);
- TextDrawSetString(PlayerData[playerid][Stats], str);
- }
- stock hash(buf[])
- {
- new length=strlen(buf);
- new s1 = 1;
- new s2 = 0;
- new n;
- for (n=0; n<length; n++)
- {
- s1 = (s1 + buf[n]) % 65521;
- s2 = (s2 + s1) % 65521;
- }
- return (s2 << 16) + s1;
- }
- stock userdata(playerid){new str[64];format(str,64,data,name(playerid));return str;}
- stock name(playerid){new str[24+1];GetPlayerName(playerid,str,sizeof(str));return str;}
- stock SetPlayerMoney(playerid,ammount){ResetPlayerMoney(playerid);return GivePlayerMoney(playerid,ammount);}
- //////////////////////////////////////////////
- // Система регистраций by kaZax //
- // Создайте папку Accounts в scriptfiles //
- // Команда вызова меню /аккаунт //
- // Сохраняет: //
- // - Пароль //
- // - Деньги //
- // - Убийства //
- // - Смерти //
- // - Жизнь //
- // - Броня //
- // kRegister System © SAMP-RU.ORG //
- // 20.06.2013 03:56 //
- //////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement