Как сделать окно регистрации на сервере самп
Обновлено: 29.04.2024
Помогите пожалуйста когда захожу на сервер не появляется окно регистрации, так же там есть ошибки:
(10403) : warning 202: number of arguments does not match definition
(10405) : warning 202: number of arguments does not match definition
(10409) : warning 202: number of arguments does not match definition
(10409) : warning 202: number of arguments does not match definition
(10409) : warning 202: number of arguments does not match definition
(10409) : warning 202: number of arguments does not match definition
(10411) : warning 202: number of arguments does not match definition
(10415) : warning 202: number of arguments does not match definition
(10415) : warning 202: number of arguments does not match definition
(10415) : warning 202: number of arguments does not match definition
(10415) : warning 202: number of arguments does not match definition
(10417) : warning 202: number of arguments does not match definition
(10421) : warning 202: number of arguments does not match definition
(10421) : warning 202: number of arguments does not match definition
(10421) : warning 202: number of arguments does not match definition
(10421) : warning 202: number of arguments does not match definition
(10423) : warning 202: number of arguments does not match definition
(10427) : warning 202: number of arguments does not match definition
(10427) : warning 202: number of arguments does not match definition
(10427) : warning 202: number of arguments does not match definition
(10427) : warning 202: number of arguments does not match definition
(10429) : warning 202: number of arguments does not match definition
(10433) : warning 202: number of arguments does not match definition
(10433) : warning 202: number of arguments does not match definition
(10433) : warning 202: number of arguments does not match definition
(10433) : warning 202: number of arguments does not match definition
(10435) : warning 202: number of arguments does not match definition
Создание системы регистрации MySQL Оценка: 8 Голосов
Romzes
В этом уроке я вам для примера расскажу, как сделать регистрацию в new.pwn моде и в процессе этого я Вам расскажу, что тут к чему, позже вы сможете использовать полученные знания для других целей, например для разных домов, системы банов, всякой фигни для ГФ мода и так дальше.
Начнём.
> Устанавливаем Denwer, запускаем сервер (на рабочем столе будет ярлык "Start Denwer").
> Заходим в браузер и в адресной строке вводим "localhost" (без кавычек).
> Спускаемся ниже и переходим по ссылке: http://localhost/Too. admin/index.php
> Итак, вы видите phpmyadmin, сейчас мы можем управлять базой данных.
> Создаём таблицу:
>> Там примерно в центре есть "Create new database".
>>> Я назвал свою БД "pawno", кодировку выбрал "cp1251_bin".
>>> БД создана
>>>> Теперь нам нужно создать таблицу для аккаунтов.
Name - Название таблицы, Number of Fields - количество полей.
Мы используем 3 поля,
1 - ID аккаунта, чтобы можно было его распознать в таблице, можно, конечно использовать ник, но с ИД удобней;
2 - Ник игрока, думаю тут всё ясно.
3 - Пароль игрока.
>>>> Таблица создана, сейчас мы настроим наши поля.
Нажимаем Save.
Все нужное я выделил красным, теперь расскажу, что за что отвечает.
Field - название поля;
Type - тип данных, есть integer, string (VARCHAR, TEXT), float, DATE, DATETIME, TIME и т.д., в общем как в павно, тут я использую VARCHAR для стринга, и INT для ID.
Length/Values - сколько "ячеек" мы выделяем для поля, для ника 24 (MAX_PLAYER_NAME), для пароля - 64.
Collation - кодировка.
AUTO_INCREMENT - генерирует значения для ID игрока в порядке возрастания (1, 2, 3. ).
>>>> Так будет выглядеть пустая, без аккаунтов таблица:
> Базу данных и таблицу мы подготовили, теперь перейдем к моду.
>> Сверху мода, где вы подключаете все инкдюлы добавляем эти строки:
>> Чуть ниже задефайним парметры БД:
>> Создадим массив для хранения данных аккаунта.
>> Создадим сток для подключения и отключения к БД.
>> Тут у нас стоки для регистрации и логина.
Создадим сток для очистки массивов при коннекте/дисконнекте.
>> Отключаем возможность писать в чат неавторизованному.
Готово, у нас есть система регистрации.
Вот так выглядит таблица с аккаунтами:
Автор урока: Snoowker .
cr1me
Здравствуйте! Сразу предупреждаю, в Pawn работаю не так давно. Написал всё по вашему уроку, но вот при компиляции выдаёт множество ошибок.
А вот то, что у меня получилось мод.
Помогите пожалуйста!
n0rze
таблицу сам создаш.
KoTe
Перед нами 5 папки: pawno, внутри нее папка include, внутри нее папка YSI; PHP; scriptfiles, внутри нее папка YSI.
Теперь разместим файлы в папках своего сервера. Из архива берем папку YSI (которая лежит в pawno/include) и помещаем ее в свою папку pawno/includes. Дальше из архива в папке scriptfiles берем папку YSI (уже другую!) и помещаем ее в папку scriptfiles вашего сервера. И папку PHP помещаем в главную директорию вашего сервера. Все, с файлами мы закончили.
Теперь открываем ваш мод и наверх ко всем инклюдам добавляем строку
Вот эту строчку:
И цвета, которые нам еще понадобятся:
Далее нам необходимо создать некий "хранитель" информации:
После всех new (если они у вас есть) добавляем вот это:
enum pInfo
<
pPass,
pCash,
pAdmin,
pKills,
pDeaths
>
new PlayerInfo[MAX_PLAYERS][pInfo];
Теперь нам необходимо создать stock, чтобы наша информация сохранялась (деньги, пароль, уровень админки, кол-во убийств и смертей)
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
<
INI_Int("Password",PlayerInfo[playerid][pPass]);
INI_Int("Cash",PlayerInfo[playerid][pCash]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Kills",PlayerInfo[playerid][pKills]);
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
return 1;
>
Дальше создаем вот этот stock
stock UserPath(playerid)
<
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return string;
>
stock udb_hash(buf[]) <
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n <
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
>
return (s2 >
Теперь мы должны сделать так, чтобы при подключении игрока на сервер ему на экран выводилось диалоговое окно.
В паблик
public OnPlayerConnect(playerid)
<
return 1;
>
Перед return 1; добавить вот это
Чтобы наши диалоговые окна работали, мы должны в паблик
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
<
return 1;
>
Перед return 1; добавить вот это:
SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
>
>
Теперь мы должны сделать так, чтобы при выходе наша статистика сохранялась:
в паблик
public OnPlayerDisconnect(playerid, reason)
<
return 1;
>
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
INI_Close(File);
Выходим на финишную прямую. Нам нужно добавить в паблик:
public OnPlayerDeath(playerid, killerid, reason)
<
return 1;
>
Перед return 1; вот это
от и все, теперь при входе на сервер вы сможете зарегистрировать аккаунт, сохранять статистику и заходить на свой аккаунт снова.
Перед нами 5 папки: pawno, внутри нее папка include, внутри нее папка YSI; PHP; scriptfiles, внутри нее папка YSI.
Теперь разместим файлы в папках своего сервера. Из архива берем папку YSI (которая лежит в pawno/include) и помещаем ее в свою папку pawno/includes. Дальше из архива в папке scriptfiles берем папку YSI (уже другую!) и помещаем ее в папку scriptfiles вашего сервера. И папку PHP помещаем в главную директорию вашего сервера. Все, с файлами мы закончили.
Теперь открываем ваш мод и наверх ко всем инклюдам добавляем строку
Вот эту строчку:
И цвета, которые нам еще понадобятся:
После всех new (если они у вас есть) добавляем вот это:
Теперь нам необходимо создать stock, чтобы наша информация сохранялась (деньги, пароль, уровень админки, кол-во убийств и смертей)
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
<
INI_Int("Password",PlayerInfo[playerid][pPass]);
INI_Int("Cash",PlayerInfo[playerid][pCash]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Kills",PlayerInfo[playerid][pKills]);
INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
return 1;
>
Дальше создаем вот этот stock
stock UserPath(playerid)
<
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return string;
>
stock udb_hash(buf[]) <
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n <
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
>
return (s2 >
Теперь мы должны сделать так, чтобы при подключении игрока на сервер ему на экран выводилось диалоговое окно.
Перед return 1; добавить вот это
Чтобы наши диалоговые окна работали, мы должны в паблик
Перед return 1; добавить вот это:
SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
>
>
Теперь мы должны сделать так, чтобы при выходе наша статистика сохранялась:
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
INI_Close(File);
Выходим на финишную прямую. Нам нужно добавить в паблик:
Перед return 1; вот это
Вот и все, теперь при входе на сервер вы сможете зарегистрировать аккаунт, сохранять статистику и заходить на свой аккаунт снова.
2.MySQL Plugin от g-stylezzz — плагин для работы с базой данных.
Это кинуть в папку с сервером (жми на ссылку) + в server.cfg добавить строку: plugins mysql sscanf
a_mysql.inc - это кинуть в папку Pawno\Includes
3. Sscanf Plugin — плагин, при помощи которого нам будет удобней и быстрей извлекать данные из результата при выборке из таблицы.
Начнём!
БД создана
Теперь нам нужно создать таблицу для аккаунтов.
Name — Название таблицы, Number of Fields — количество полей.
Мы используем 3 поля,
1. ID аккаунта, чтобы можно было его распознать в таблице, можно, конечно использовать ник, но с ИД удобней;
2. Ник игрока, думаю тут всё ясно;
3. Пароль игрока.
Таблица создана, сейчас мы настроим наши поля.
Нажимаем Save.
Все нужное я выделил красным, теперь расскажу, что за что отвечает.
Field — название поля;
Type — тип данных, есть integer (целые числа), string (VARCHAR, TEXT), float, DATE, DATETIME, TIME и т.д., в общем как в павно, тут я использую VARCHAR для строк, и INT для целых чисел.
Length/Values — сколько «ячеек» мы выделяем для поля, для ника 24 (MAX_PLAYER_NAME), для пароля — 64.
Collation — кодировка.
AUTO_INCREMENT — генерирует значения для ID игрока в порядке возрастания (1, 2, 3. ).
Так будет выглядеть пустая, без аккаунтов таблица:
- Базу данных и таблицу мы подготовили, теперь перейдем к моду.
- Сверху мода, где вы подключаете все инклюды, добавляем эти строки:
- Чуть ниже задефайним парметры БД:
- Создадим массив для хранения данных аккаунта.
enum Variables <
aID,
aName[MAX_PLAYER_NAME],
aPassword[64],
bool: aLogged,
aWrongPassword,
>;
new playerVariable[100][Variables]; // 100 - моё кол-во слотов для игроков на сервере.
- Создадим функцию для подключения и отключения к БД.
ConnectMySQL() < // В OnGameModeInIt вставьте ConnectMySQL();
mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS); // Тут мы используем все данные, которые мы дефайнили.
switch(mysql_ping()) < // Проверка на то, что мы подключены к БД.
case 1: print("MySQL connection: alive."); // Если подключена БД.
case -1: print("MySQL connection: dead."); // Если не подключена БД.
>
return 1;
>
Читайте также: