Текущая версия SA-MP: 0.3.7


IP: 77.220.180.96:7777
  Новые сообщения · Поиск
  • Страница 1 из 1
  • 1
Модератор форума: KaTacTpOqpa  
Регистрация в Диалоговом окне(DM / TDM) + Сохр денег и Очков
FAMAS Сообщение # 1  | 00:32:16
Фанат Владокса :D
Скриптеры
Сообщений: 84
Репутация: 44
Для начало нужно скачать Инклуд "mxINI" - www.google.com в помощь
И в начало мода вставить #include
1 Шаг - enum (над всеми new)
Code
enum InfoPlayer  
  {  
  pMoney, // В дальнейшем будет исользоватся для сохранения денег   
  pScore //  В дальнейшем будет исользоватся для сохранения Очков  
  }


2 Шаг Переменная для использования enum'a (После enum'a)
Code
new PlayerInfo[MAX_PLAYERS][InfoPlayer];


3 Шаг Диалоговые окна (В OnPlayerConnect)
Code
new PlayerName[MAX_PLAYER_NAME];   
  GetPlayerName(playerid,PlayerName,sizeof(PlayerName));   
  new acc[128];  
  format(acc,sizeof(acc),"%s.ini",PlayerName);  
  if(!fexist(acc))// Ищем аккаунт если он не существует то   
  {  
  ShowPlayerDialog(playerid,id вашего диалога,DIALOG_STYLE_INPUT, "Регистрация", "Вы должны зарегистрироваться! \nВведите ваш пароль:", "Регистрация", "");   
  }  
  else // Если он есть то   
  {  
  ShowPlayerDialog(playerid,id вашего диалога,DIALOG_STYLE_INPUT, "Авторизация", "Вы должны авторизоваться! \nВведите ваш пароль:", "Логин", ""); //если он есть, то авторизуем его  
  }


4 Шаг Создание аккаунта
Code
if(dialogid == id вашего диалога) //Регистрация  
      {  
          if(!strlen(inputtext)) return ShowPlayerDialog(playerid, id вашего диалога, DIALOG_STYLE_INPUT, "Регистрация", "Вы должны зарегистрироваться! \nВведите ваш пароль:", "Ок", ""); // если строка пустая ВОЗВРАЩАЕМ игроку Диалоговое окно  
          new PlayerName[MAX_PLAYER_NAME];  
          GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //узнаем ник  
          new acc[128];  
          format(account,sizeof(acc),"%s.ini",PlayerName);//ищем ак  
          if(fexist(acc)) return ShowPlayerDialog(playerid,id Вашго диалогового окна,DIALOG_STYLE_INPUT, "Авторизация", "Вы должны авторизоваться! \nВведите ваш пароль:", "LOGIN", ""); //если акк уже существует, то логиним игрока  
          new iniFile = ini_createFile(acc); //создаем акк  
          if(iniFile < 0) ini_openFile (acc); //если файл пустой, то...  
          {  
              ini_setString(iniFile,"Пароль",inputtext);  
              ini_setInteger(iniFile, "Money", 5000);  
              ini_setInteger(iniFile, "Score", 0);  
              ini_closeFile(iniFile);   
              ShowPlayerDialog(playerid,id вашего диалога,DIALOG_STYLE_INPUT, "Авторизация", "Вы должны авторизоваться! \nВведите ваш пароль:", "LOGIN", ""); //теперь после регистрации, мы дадим игроку залогиниться  
              return 1;  
          }


5 Шаг авторизация аккаунта
Code
if(dialogid == id вашего диалога) //авторизация  
      {  
          new PlayerName[MAX_PLAYER_NAME], password[64];  
          GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //узнаем ник  
          new acc[128];  
          format(acc,sizeof(acc),"%s.ini",PlayerName);  
          new iniFile = ini_openFile(acc); //открываем акк  
          ini_getString(iniFile, "Пароль", password); // Узнаём пароль аккаунта.  
          if(!strcmp(inputtext, password, true))   
          {  
              ini_getInteger(iniFile, "Money", Player[playerid][pMoney]);   
              ini_getInteger(iniFile, "Score", Player[playerid][pScore]);   
              SetPlayerScore(playerid, Player[playerid][pScore);   
              GivePlayerMoney(playerid, Player[playerid][pMoney]);  
              ini_closeFile(iniFile);  
              return 1;  
          }  
          else  
          {  
              SendClientMessage(playerid, COLOR_SYSTEM, "System: Неверный пароль!");  
              ShowPlayerDialog(playerid, id вашего диалога, DIALOG_STYLE_INPUT, "Авторизация", "Вы должны авторизоваться! \nВведите ваш пароль:", "Ок", "");  
              return 1;  
          }  
      }


6 Шаг Сохранение Аккаунта в OnPlayerDisconnect
Code
new PlayerName[MAX_PLAYER_NAME], account[128];  
      GetPlayerName(playerid,PlayerName,sizeof(PlayerName));   
      format(account,sizeof(account), "%s.ini", PlayerName);   
      new iniFile = ini_openFile(account);   
      ini_setInteger(iniFile, "Money", GetPlayerMoney(playerid));   
      ini_setInteger(iniFile, "Score", GetPlayerScore(playerid));  
      ini_closeFile(iniFile);
BJIADOKC Сообщение # 2  | 00:40:36
Скриптеры
Сообщений: 601
Репутация: 161
Quote (FAMAS)
mxINI

хех, самый быстрый и самый нестабильный инклуд для работы с файлами biggrin
на серваке с онлайном > 50 он тупо убивает сервер, по мне так лучше старый добрый дини, который до 250 человек, медленно, но верно выдерживает happy


тут больше не сижу... открыл свой проект
BJIADOKC Сообщение # 3  | 00:44:47
Скриптеры
Сообщений: 601
Репутация: 161
если вариант, чтобы ускорить работу сервера лучше использовать zcmd + sscanf + dini, так как зкмд и ссканф сполна компенсируют медленную скорость дини и получается четкий баланс скорости/производительности

тут больше не сижу... открыл свой проект
Jin Сообщение # 4  | 09:27:19
Забаненые
Сообщений: 84
Репутация: -23
BJIADOKC создай лутше ты урок или измени этот!
P.S Это в админку или в мод?!
FAMAS Сообщение # 5  | 10:46:37
Фанат Владокса :D
Скриптеры
Сообщений: 84
Репутация: 44
Jin, biggrin А ты как думаеш куда это ?
Я же все росписал
Jin Сообщение # 6  | 22:19:49
Забаненые
Сообщений: 84
Репутация: -23
а скажите ид норм плз
BJIADOKC Сообщение # 7  | 02:14:28
Скриптеры
Сообщений: 601
Репутация: 161
вот пример на Dini (нужен соответствующий инклуд)
начало:
Code

#include <Dini>

#pragma dynamic 150000

#define LOGIN 1
#define REG 2
#define LOGIN_ERROR 3
#define REG_ERROR 4

enum pInfo
{
Kills,
Deaths,
bool:LoggedIn
}

new Player[MAX_PLAYERS][pInfo];

в OnPlayerConnect
Code

new fileH[64], named[24];
GetPlayerName(playerid,named,24);
format(fileH,64,"%s.ini",named);
if(!dini_Exists(fileH)) ShowPlayerRegisterDialog(playerid);
else ShowPlayerLoginDialog(playerid);

в OnDialogResponse
Code

switch(dialogid)
{
case REG:
{
switch(response)
{
case 0: return ShowPlayerRegisterDialog(playerid);
case 1: return CreateAccount(playerid,inputtext);
}
}
case LOGIN:
{
switch(response)
{
case 0: return Kick(playerid);
case 1: return LoadAccount(playerid,inputtext);
}
}
case LOGIN_ERROR:
{
switch(response)
{
default: return ShowPlayerLoginDialog(playerid);
}
}
case REG_ERROR:
{
switch(response)
{
default: return ShowPlayerRegisterDialog(playerid);
}
}
}

в OnPlayerDisconnect
Code

SaveAccount(playerid);

и в самый конец
Code

stock CreateAccount(playerid,password[])
{
if(!strlen(password) || strlen(password) < 5 || strlen(password) > 20) return ShowPlayerDialog(playerid,REG_ERROR,DIALOG_STYLE_MSGBOX,"Ошибка","Неверный формат пароля","Ок","Отмена");
new file[64], name[24];
GetPlayerName(playerid,name,24);
format(file,64,"%s.ini",name);
if(dini_Exists(file)) return ShowPlayerLoginDialog(playerid);
dini_Create(file);
dini_Set(file,"Password",password);
dini_IntSet(file,"Kills",0);
dini_IntSet(file,"Deaths",0);
Player[playerid][LoggedIn] = true;
SendClientMessage(playerid,0xAFAFAFAA,"Вы зарегистрировались и автоиатически залогинелись");
return 1;
}

stock LoadAccount(playerid,password[])
{
new file[64], name[24];
GetPlayerName(playerid,name,24);
if(!strlen(password) || strlen(password) < 5 || strlen(password) > 20) return ShowPlayerDialog(playerid,LOGIN_ERROR,DIALOG_STYLE_MSGBOX,"Ошибка","Неверный формат пароля","Ок","Отмена");
format(file,64,"%s.ini",name);
if(!dini_Exists(file)) return ShowPlayerRegisterDialog(playerid);
new temp[256];
temp = dini_Get(file,"Password");
if(strcmp(temp,password,false) == -1) return ShowPlayerDialog(playerid,LOGIN_ERROR,DIALOG_STYLE_MSGBOX,"Ошибка","Неверный пароль","Ок","Отмена");
Player[playerid][Kills] = dini_Int(file,"Kills");
Player[playerid][Deaths] = dini_Int(file,"Deaths");
Player[playerid][LoggedIn] = true;
SendClientMessage(playerid,0xAFAFAFAA,"Вы успешно вошли");
return 1;
}

stock SaveAccount(playerid)
{
new file[64], name[24];
GetPlayerName(playerid,name,24);
format(file,64,"%s.ini",name);
if(!dini_Exists(file)) return 1;
dini_IntSet(file,"Kills",Player[playerid][Kills]);
dini_IntSet(file,"Deaths",Player[playerid][Deaths]);
Player[playerid][LoggedIn] = false;
return 1;
}

stock ShowPlayerRegisterDialog(playerid) return ShowPlayerDialog(playerid,REG,DIALOG_STYLE_INPUT,"Регистрация","Введите свой будущий пароль в поле снизу","Ок","Отмена");

stock ShowPlayerLoginDialog(playerid) return ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Логин","Введите пароль от своего аккаунта в поле снизу","Ок","Отмена");

и в OnPlayerDeath, чтобы фраги и смерти прибавлялись в переменные
Code

Player[killerid][Kills]++;
Player[playerid][Deaths]++;
SetPlayerScore(killerid,Player[killerid][Kills]);

by BJIADOKC


тут больше не сижу... открыл свой проект
Jin Сообщение # 8  | 13:28:14
Забаненые
Сообщений: 84
Репутация: -23
а у мя нет этого паблика OnDialogResponse + фраги у мну сохр. уже и мне надо оффать это:
Code
#define USE_MENUS        // Comment to remove all menus.  Uncomment to enable menus
//#define DISPLAY_CONFIG  // displays configuration in console window on filterscript load
#define SAVE_LOGS           // Comment if your server runs linux (logs wont be saved)
#define ENABLE_SPEC         // Comment if you are using a spectate system already
#define USE_STATS           // Comment to disable /stats
#define ANTI_MINIGUN        // Displays who has a minigun
//#define USE_AREGISTER       // Changes /register, /login etc to  /areister, /alogin etc
//#define HIDE_ADMINS   // Displays number of admins online instead of level and names
#define ENABLE_FAKE_CMDS    // Comment to disable /fakechat, /fakedeath, /fakecmd commanads
FAMAS Сообщение # 9  | 14:18:23
Фанат Владокса :D
Скриптеры
Сообщений: 84
Репутация: 44
Jin, Этой темой я привел просто пример регистрации для модов DM TDM
Использовать данную тему я никого не заставляю ))
BJIADOKC Сообщение # 10  | 14:11:50
Скриптеры
Сообщений: 601
Репутация: 161
//Оффтоп удален, Причина: Оффтоп biggrin
by BJIADOKC


тут больше не сижу... открыл свой проект
[MTA]_MaPeR Сообщение # 11  | 07:17:12
Пользователи
Сообщений: 9
Репутация: 1
Странно...
Code
#include <Dini>
#include <a_samp>
#pragma dynamic 150000

#define LOGIN 1
#define REG 2
#define LOGIN_ERROR 3
#define REG_ERROR 4

enum pInfo
{
Kills,
Deaths,
bool:LoggedIn
}

new Player[MAX_PLAYERS][pInfo];

public OnPlayerConnect(playerid)
{
new fileH[64], named[24];
GetPlayerName(playerid,named,24);
format(fileH,64,"%s.ini",named);
if(!dini_Exists(fileH)) ShowPlayerRegisterDialog(playerid);
else ShowPlayerLoginDialog(playerid);
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
switch(dialogid)
{
case REG:
{
switch(response)
{
case 0: return ShowPlayerRegisterDialog(playerid);
case 1: return CreateAccount(playerid,inputtext);
}
}
case LOGIN:
{
switch(response)
{
case 0: return Kick(playerid);
case 1: return LoadAccount(playerid,inputtext);
}
}
case LOGIN_ERROR:
{
switch(response)
{
default: return ShowPlayerLoginDialog(playerid);
}
}
case REG_ERROR:
{
switch(response)
{
default: return ShowPlayerRegisterDialog(playerid);
}
}
}
public OnPlayerDisconnect(playerid, reason)
{
SaveAccount(playerid);
return 1;
}
stock CreateAccount(playerid,password[])
{
if(!strlen(password) || strlen(password) < 5 || strlen(password) > 20) return ShowPlayerDialog(playerid,REG_ERROR,DIALOG_STYLE_MSGBOX,"Ошибка","Неверный формат пароля","Ок","Отмена");
new file[64], name[24];
GetPlayerName(playerid,name,24);
format(file,64,"%s.ini",name);
if(dini_Exists(file)) return ShowPlayerLoginDialog(playerid);
dini_Create(file);
dini_Set(file,"Password",password);
dini_IntSet(file,"Kills",0);
dini_IntSet(file,"Deaths",0);
Player[playerid][LoggedIn] = true;
SendClientMessage(playerid,0xAFAFAFAA,"Вы зарегистрировались и автоиатически залогинелись");
return 1;
}

stock LoadAccount(playerid,password[])
{
new file[64], name[24];
GetPlayerName(playerid,name,24);
if(!strlen(password) || strlen(password) < 5 || strlen(password) > 20) return ShowPlayerDialog(playerid,LOGIN_ERROR,DIALOG_STYLE_MSGBOX,"Ошибка","Неверный формат пароля","Ок","Отмена");
format(file,64,"%s.ini",name);
if(!dini_Exists(file)) return ShowPlayerRegisterDialog(playerid);
new temp[256];
temp = dini_Get(file,"Password");
if(strcmp(temp,password,false) == -1) return ShowPlayerDialog(playerid,LOGIN_ERROR,DIALOG_STYLE_MSGBOX,"Ошибка","Неверный пароль","Ок","Отмена");
Player[playerid][Kills] = dini_Int(file,"Kills");
Player[playerid][Deaths] = dini_Int(file,"Deaths");
Player[playerid][LoggedIn] = true;
SendClientMessage(playerid,0xAFAFAFAA,"Вы успешно вошли");
return 1;
}

stock SaveAccount(playerid)
{
new file[64], name[24];
GetPlayerName(playerid,name,24);
format(file,64,"%s.ini",name);
if(!dini_Exists(file)) return 1;
dini_IntSet(file,"Kills",Player[playerid][Kills]);
dini_IntSet(file,"Deaths",Player[playerid][Deaths]);
Player[playerid][LoggedIn] = false;
return 1;
}

stock ShowPlayerRegisterDialog(playerid) return ShowPlayerDialog(playerid,REG,DIALOG_STYLE_INPUT,"Регистрация","Введите свой будущий пароль в поле снизу","Ок","Отмена");

stock ShowPlayerLoginDialog(playerid) return ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Логин","Введите пароль от своего аккаунта в поле снизу","Ок","Отмена");
public OnPlayerDeath(playerid, killerid, reason)
{
Player[killerid][Kills]++;
Player[playerid][Deaths]++;
SetPlayerScore(killerid,Player[killerid][Kills]);
return 1;
}

И вауля
C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\pawno\include\Dini.inc(32) : error 017: undefined symbol "fexist"
C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\pawno\include\Dini.inc(32) : warning 215: expression has no effect
C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\pawno\include\Dini.inc(32) : error 001: expected token: ";", but found ")"
C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\pawno\include\Dini.inc(32) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\pawno\include\Dini.inc(32) : fatal error 107: too many error messages on one line
Demetrius Сообщение # 12  | 13:01:25
VIP-пользователи
Сообщений: 1192
Репутация: 158
Quote (|MTA|_MaPeR)
public OnPlayerConnect(playerid)
{
new fileH[64], named[24];
GetPlayerName(playerid,named,24);
format(fileH,64,"%s.ini",named);
if(!dini_Exists(fileH)) ShowPlayerRegisterDialog(playerid);
else ShowPlayerLoginDialog(playerid);
}

return?


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
kol4insergei Сообщение # 13  | 14:18:13
Забаненые
Сообщений: 5
Репутация: 0
помогите плиз мне с воротами. у меня вороты воще улетают в даль хд
[MTA]_MaPeR Сообщение # 14  | 10:09:26
Пользователи
Сообщений: 9
Репутация: 1
public OnPlayerConnect(playerid)
{
new fileH[64], named[24];
GetPlayerName(playerid,named,24);
format(fileH,64,"%s.ini",named);
if(!dini_Exists(fileH)) ShowPlayerRegisterDialog(playerid);
else ShowPlayerLoginDialog(playerid);
return 1;
}
Поставил но все равно тоже самое
C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\pawno\include\Dini.inc(32) : error 017: undefined symbol "fexist"
C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\pawno\include\Dini.inc(32) : warning 215: expression has no effect
C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\pawno\include\Dini.inc(32) : error 001: expected token: ";", but found ")"
C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\pawno\include\Dini.inc(32) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Администратор\Рабочий стол\Новая папка\pawno\include\Dini.inc(32) : fatal error 107: too many error messages on one line
Demetrius Сообщение # 15  | 13:25:39
VIP-пользователи
Сообщений: 1192
Репутация: 158
Quote (|MTA|_MaPeR)
pawno\include\Dini.inc

наверное что-то с дини, может быть


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
[MTA]_MaPeR Сообщение # 16  | 02:13:34
Пользователи
Сообщений: 9
Репутация: 1
да не все нормально. Сделал без ошибок все пашет
Code
#include <a_samp>
#include <Dini>
#pragma dynamic 150000

#define LOGIN 1
#define REG 2
#define LOGIN_ERROR 3
#define REG_ERROR 4

enum pInfo
{
Kills,
Deaths,
bool:LoggedIn
}

new Player[MAX_PLAYERS][pInfo];

public OnPlayerConnect(playerid)
{
new fileH[64], named[24];
GetPlayerName(playerid,named,24);
format(fileH,64,"%s.ini",named);
if(!dini_Exists(fileH)) ShowPlayerRegisterDialog(playerid);
else ShowPlayerLoginDialog(playerid);
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case REG:
{
switch(response)
{
case 0: return ShowPlayerRegisterDialog(playerid);
case 1: return CreateAccount(playerid,inputtext);
}
}
case LOGIN:
{
switch(response)
{
case 0: return Kick(playerid);
case 1: return LoadAccount(playerid,inputtext);
}
}
case LOGIN_ERROR:
{
switch(response)
{
default: return ShowPlayerLoginDialog(playerid);
}
}
case REG_ERROR:
{
switch(response)
{
default: return ShowPlayerRegisterDialog(playerid);
}
}
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SaveAccount(playerid);
return 1;
}

stock CreateAccount(playerid,password[])
{
if(!strlen(password) || strlen(password) < 5 || strlen(password) > 20) return ShowPlayerDialog(playerid,REG_ERROR,DIALOG_STYLE_MSGBOX,"Ошибка","Неверный формат пароля","Ок","Отмена");
new file[64], name[24];
GetPlayerName(playerid,name,24);
format(file,64,"%s.ini",name);
if(dini_Exists(file)) return ShowPlayerLoginDialog(playerid);
dini_Create(file);
dini_Set(file,"Password",password);
dini_IntSet(file,"Kills",0);
dini_IntSet(file,"Deaths",0);
Player[playerid][LoggedIn] = true;
SendClientMessage(playerid,0xAFAFAFAA,"Вы зарегистрировались и автоиатически залогинелись");
return 1;
}

stock LoadAccount(playerid,password[])
{
new file[64], name[24];
GetPlayerName(playerid,name,24);
if(!strlen(password) || strlen(password) < 5 || strlen(password) > 20) return ShowPlayerDialog(playerid,LOGIN_ERROR,DIALOG_STYLE_MSGBOX,"Ошибка","Неверный формат пароля","Ок","Отмена");
format(file,64,"%s.ini",name);
if(!dini_Exists(file)) return ShowPlayerRegisterDialog(playerid);
new temp[256];
temp = dini_Get(file,"Password");
if(strcmp(temp,password,false) == -1) return ShowPlayerDialog(playerid,LOGIN_ERROR,DIALOG_STYLE_MSGBOX,"Ошибка","Неверный пароль","Ок","Отмена");
Player[playerid][Kills] = dini_Int(file,"Kills");
Player[playerid][Deaths] = dini_Int(file,"Deaths");
Player[playerid][LoggedIn] = true;
SendClientMessage(playerid,0xAFAFAFAA,"Вы успешно вошли");
return 1;
}

stock SaveAccount(playerid)
{
new file[64], name[24];
GetPlayerName(playerid,name,24);
format(file,64,"%s.ini",name);
if(!dini_Exists(file)) return 1;
dini_IntSet(file,"Kills",Player[playerid][Kills]);
dini_IntSet(file,"Deaths",Player[playerid][Deaths]);
Player[playerid][LoggedIn] = false;
return 1;
}

stock ShowPlayerRegisterDialog(playerid) return ShowPlayerDialog(playerid,REG,DIALOG_STYLE_INPUT,"Регистрация","Введите свой будущий пароль в поле снизу","Ок","Отмена");

stock ShowPlayerLoginDialog(playerid) return ShowPlayerDialog(playerid,LOGIN,DIALOG_STYLE_INPUT,"Логин","Введите пароль от своего аккаунта в поле снизу","Ок","Отмена");
public OnPlayerDeath(playerid, killerid, reason)
{
Player[killerid][Kills]++;
Player[playerid][Deaths]++;
SetPlayerScore(killerid,Player[killerid][Kills]);
return 1;
}



Редактировано [MTA]_MaPeR - Понедельник, 25 Июл 2011, 02:15:43
Demetrius Сообщение # 17  | 11:17:59
VIP-пользователи
Сообщений: 1192
Репутация: 158
Quote (BJIADOKC)
Вы зарегистрировались и автоиатически залогинелись

влад грамотей :DDD


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
BJIADOKC Сообщение # 18  | 16:16:47
Скриптеры
Сообщений: 601
Репутация: 161
Quote (Armin)
влад грамотей :DDD

а хуле
Quote (FAMAS)
Для начало

Quote (Jin)
лутше

Quote (FAMAS)
думаеш

Quote (FAMAS)
росписал

Quote (|MTA|_MaPeR)
вауля

Quote (kol4insergei)
воще

Quote (|MTA|_MaPeR)
тоже самое


тут больше не сижу... открыл свой проект
FAMAS Сообщение # 19  | 18:32:23
Фанат Владокса :D
Скриптеры
Сообщений: 84
Репутация: 44
BJIADOKC, WTF?! biggrin
Jin Сообщение # 20  | 13:34:16
Забаненые
Сообщений: 84
Репутация: -23
А как старую регу снести в LAdmin4 и сделать чтоб файл записовался в папку users
P.S я делал по уроку Владокса
  • Страница 1 из 1
  • 1
Поиск: