Форум

  • Страница 1 из 1
  • 1
Модератор форума: dr40  
Форум | www.SAMP-TEAM.com » Wiki SA-MP » Вопросы по скриптингу » Помогите доделать регистрацию
Помогите доделать регистрацию
Я по вашему форуму сделал регистрацию(Спасибо вам) =)
Но там куча ероров, а руки у меня кривые)
Вот файл - http://rghost.ru/46032429
Помогите исправить ошибки(Не лексические, конечно) biggrin
16.05.2013 в 11:55
Код
#include <mxINI>


А кто будет про
Код
#include <a_samp>
вспоминать?
16.05.2013 в 15:19
Упс))) Спс)) Нежданчик)) Ероров стало меньше, но они есть))) Что делать дальше?)
16.05.2013 в 15:30
Кривая регистрация
16.05.2013 в 16:37
Можете скинуть нормальную регистрацию?))))
16.05.2013 в 17:22
Вот моя:

Вверх

Код


#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;
}


Проверь.

Инклуды
16.05.2013 в 18:01
Спасибо, щас попробую))
16.05.2013 в 18:09
Форум | www.SAMP-TEAM.com » Wiki SA-MP » Вопросы по скриптингу » Помогите доделать регистрацию
  • Страница 1 из 1
  • 1
Поиск: