Serterr | Дата: Четверг, 16.05.2013, 11:55 | Сообщение # 1 |
.::Offline::.
Разбойник
Сообщений: 41
[ 10 ]
Награды: 0
Статус
отсутствует
| Я по вашему форуму сделал регистрацию(Спасибо вам) =) Но там куча ероров, а руки у меня кривые) Вот файл - http://rghost.ru/46032429 Помогите исправить ошибки(Не лексические, конечно)
|
|
| |
Serterr | Дата: Четверг, 16.05.2013, 15:30 | Сообщение # 3 |
.::Offline::.
Разбойник
Сообщений: 41
[ 10 ]
Награды: 0
Статус
отсутствует
| Упс))) Спс)) Нежданчик)) Ероров стало меньше, но они есть))) Что делать дальше?)
Сообщение отредактировал
Serterr - Четверг, 16.05.2013, 15:32 |
|
| |
ZioHik | Дата: Четверг, 16.05.2013, 18:01 | Сообщение # 6 |
.::Offline::.
http://u.to/N46EAw
Сообщений: 831
[ 82 ]
Награды: 29
Статус
отсутствует
| Вот моя:
Вверх
Код
#include <a_samp> #include <mxINI> #include <md5>
#define REG_DIALOG_ID 1112 #define LOGIN_DIALOG_ID 2112
forward OnPlayerLogin(playerid,password[]); forward OnPlayerUpdate_DM(playerid); forward OnPlayerRegister(playerid, password[]);
enum pInfo { pPassword[128], pLevel // Тут можно еще добавлять }
new PlayerInfo[MAX_PLAYERS][pInfo]; new gPlayerLogged[MAX_PLAYERS]; new gPlayerAccount[MAX_PLAYERS];
В public OnPlayerConnect(playerid)
Код gPlayerLogged[playerid] = 0; gPlayerAccount[playerid] = 0; PlayerInfo[playerid][pLevel] = 0; new string[256]; new plname[MAX_PLAYER_NAME]; GetPlayerName(playerid, plname, sizeof(plname)); format(string, sizeof(string), "%s.ini", plname); SendClientMessage(playerid, COLOR_YELLOW, "Загрузка данных..."); if(fexist(string)) { gPlayerAccount[playerid] = 1; } else { gPlayerAccount[playerid] = 0; } В OnPlayerDisconnect(playerid)
Код OnPlayerUpdate_DM(playerid);
В public OnPlayerRequestClass(playerid, classid)
Код if(gPlayerLogged[playerid] != 1) { if(gPlayerAccount[playerid] != 0) { new loginmsg[256+1]; format(loginmsg,sizeof(loginmsg),"Этот аккаунт зарегестрирован\nДля авторизации введите свой пароль"); ShowPlayerDialog(playerid,LOGIN_DIALOG_ID,DIALOG_STYLE_INPUT,"Авторизация",loginmsg,"Принять","Отмена"); } else { new loginmsg[256+1]; format(loginmsg,sizeof(loginmsg),"Этот аккаунт не зарегистрирован\nДля регистрации введите свой пароль в окошко\nНе советуем использовать символы №;%@\nСоветуем использовать пароль из букв и цифр"); ShowPlayerDialog(playerid,REG_DIALOG_ID,DIALOG_STYLE_INPUT,"Регистрация",loginmsg,"Принять","Отмена"); } } else SpawnPlayer(playerid);
В OnGameModeExit()
Код for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { OnPlayerUpdate_DM(i); gPlayerLogged[i] = 0; } }
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Код new string[256]; new tpass[256]; new sendername[MAX_PLAYER_NAME]; if(strlen(inputtext)) { while(strfind(inputtext,"%",true)!=-1) { inputtext[strfind(inputtext,"%",true)] = '#'; } } if(dialogid == LOGIN_DIALOG_ID) { if(response) { if(!strlen(inputtext)) { new loginmsg[256+1]; format(loginmsg,256,"Этот аккаунт зарегестрирован\nДля авторизации введите свой пароль"); ShowPlayerDialog(playerid,LOGIN_DIALOG_ID,DIALOG_STYLE_INPUT,"Авторизация",loginmsg,"Принять","Отмена"); return 1; } GetPlayerName(playerid,sendername,sizeof(sendername)); format(string,sizeof(string),"%s.ini",sendername); new File = iniOpen(string); iniGet(File,"Key",tpass); iniClose(File); if(!strcmp(tpass,MD5_Hash(inputtext),true)) { OnPlayerLogin(playerid,tpass); } else { SendClientMessage(playerid,COLOR_GREY,"Неверный пароль!"); new loginmsg[256+1]; format(loginmsg,256,"Этот аккаунт зарегестрирован\nДля авторизации введите свой пароль"); ShowPlayerDialog(playerid,LOGIN_DIALOG_ID,DIALOG_STYLE_INPUT,"Авторизация",loginmsg,"Принять","Отмена"); } } else { Kick(playerid); } } else if(dialogid == REG_DIALOG_ID) { if(response) { if(!strlen(inputtext)) { new loginmsg[256+1]; format(loginmsg,256,"Пожалуйста введите свой пароль в окошко"); ShowPlayerDialog(playerid,REG_DIALOG_ID,DIALOG_STYLE_INPUT,"Регистрация",loginmsg,"Принять","Отмена"); return 1; } GetPlayerName(playerid,sendername,sizeof(sendername)); format(string,sizeof(string),"%s.ini",sendername); Create(string); OnPlayerRegister(playerid,MD5_Hash(inputtext)); new loginmsg[256+1]; format(loginmsg,256,"Пожалуйста введите свой пароль в окошко"); ShowPlayerDialog(playerid,LOGIN_DIALOG_ID,DIALOG_STYLE_INPUT,"Авторизация",loginmsg,"Принять","Отмена"); } else { Kick(playerid); } }
В OnPlayerSpawn(playerid)
Код if(gPlayerLogged[playerid] == 0) { SendClientMessage(playerid, COLOR_LIGHTRED, "Извините но этот сервер требует залогинится перед тем как войти в игру."); Kick(playerid); }
Код public OnPlayerRegister(playerid, password[]) { if(IsPlayerConnected(playerid)) { new string3[32]; new playername3[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername3, sizeof(playername3)); format(string3, sizeof(string3), "%s.ini", playername3); new File = iniOpen(string3); iniSet(File,"Key",password); iniSetInt(File,"Level",PlayerInfo[playerid][pLevel]); iniClose(File); } return 1; }
public OnPlayerUpdate_DM(playerid) { if(IsPlayerConnected(playerid)) { if(IsPlayerNPC(playerid))return 1; if(gPlayerLogged[playerid]) { new string3[32]; new playername3[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername3, sizeof(playername3)); format(string3, sizeof(string3), "%s.ini", playername3); new File = iniOpen(string3); iniSetInt(File,"Level",PlayerInfo[playerid][pLevel]); iniClose(File); } } return 1; }
public OnPlayerLogin(playerid,password[]) { new string2[64]; new playername2[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername2, sizeof(playername2)); format(string2, sizeof(string2), "%s.ini", playername2); new File = iniOpen(string2); iniGetInt(File,"Level",PlayerInfo[playerid][pLevel]); iniClose(File); gPlayerLogged[playerid] = 1; return 1; }
stock Create(filename[]) { new File:fhnd; if(fexist(filename)) return false; fhnd = fopen(filename,io_write); fclose(fhnd); return true; }
Проверь.
Инклуды
|
|
| |