Файл .amx весит 220 КБ.
Сейчас займусь загрузкой сервера с другой сборки.
Может быть проблема в W8, кто знает. Но он запускался. На 0.3z
Файл .amx весит 220 КБ.
Сейчас займусь загрузкой сервера с другой сборки.
Может быть проблема в W8, кто знает. Но он запускался. На 0.3z
PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..
25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/
#FIXSAMP
Проблему с консолью решена. Следом за ней появилась проблема с регистрацией, не сохраняются аккаунты.
(Проблема была решена загрузкой сборки 0.3.7 и компиляции их же Pawno.)
Пытался воспользоваться stock'ом, но ничего не работалоPHP код:
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}
PHP код:
public OnPlayerDisconnect(playerid, reason)
{
SavePlayer(playerid);
return 1;
}
В моём распоряжении есть еще:PHP код:
stock SavePlayer(playerid)
{
new string[64];// Массив с путём для файла
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string, sizeof(string), "player/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
new iniFile = ini_openFile(string);// Открываем файл по тому пути который указали.
ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
ini_setInteger(iniFile,"Admin",Player[playerid][pAdmin]);// Записываем уровень админа
ini_setInteger(iniFile,"Leader", PlayerInfo[playerid][pLeader]);
ini_setInteger(iniFile,"Member", PlayerInfo[playerid][pMember]);
ini_setInteger(iniFile,"Rang", PlayerInfo[playerid][pRang]);
ini_closeFile(iniFile);// Закрываем файл
}
PHP код:
forward OnPlayerRegister(playerid, password[]);
public OnPlayerRegister(playerid, password[])// Паблик регистрации
{
if(IsPlayerConnected(playerid))// Проверка на подключение игрока
{
new string[64];// Массив с путём для файла
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string,sizeof(string), "player/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
new iniFile = ini_createFile(string);// Создаём файл с именем игрока в папке players
if(iniFile < 0)// Если Файла нет
{
iniFile = ini_openFile(string);// Открываем
}
if(iniFile >= 0)// Если файл есть
{
strmid(Player[playerid][pPass],password,0,strlen(password),255);// Присваиваем массиву pPass, значение password[]
ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
ini_setInteger(iniFile,"Admin",Player[playerid][pAdmin]);
ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
}
}
return 1;
}
forward OnPlayerLogin(playerid,password[]);
public OnPlayerLogin(playerid,password[])
{
if(IsPlayerConnected(playerid))// Проверка на подключение игрока
{
new string[64];// Массив с путём для файла
new pass[64];// Массив с паролем
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string,sizeof(string), "player/%s.ini", playername);// Добавляем имя игрока, в путь для загрузки
new iniFile = ini_openFile(string);// Открываем файл
ini_getString(iniFile,"Pass",pass,64);// Загружаем пароль
if(strcmp(pass,password,true) == 0)// Если введёный пароль, соответсвует паролю при регистрации, то загружаем акк
{
ini_getString(iniFile,"Pass",Player[playerid][pPass],64);// Загружаем пароль
ini_getInteger(iniFile,"Admin",Player[playerid][pAdmin]);// Загружаем уровень админа
ini_closeFile(iniFile);// Закрываем файл
}
else// Если пароль не верен..
{
ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
return 1;
}
SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");// Выводим игрок сообщение
SpawnPlayer(playerid);// Спавним игрока
}
return 1;forward OnPlayerRegister(playerid, password[]);
public OnPlayerRegister(playerid, password[])// Паблик регистрации
{
if(IsPlayerConnected(playerid))// Проверка на подключение игрока
{
new string[64];// Массив с путём для файла
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string,sizeof(string), "player/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
new iniFile = ini_createFile(string);// Создаём файл с именем игрока в папке players
if(iniFile < 0)// Если Файла нет
{
iniFile = ini_openFile(string);// Открываем
}
if(iniFile >= 0)// Если файл есть
{
strmid(Player[playerid][pPass],password,0,strlen(password),255);// Присваиваем массиву pPass, значение password[]
ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
ini_setInteger(iniFile,"Admin",Player[playerid][pAdmin]);
ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
}
}
return 1;
}
forward OnPlayerLogin(playerid,password[]);
public OnPlayerLogin(playerid,password[])
{
if(IsPlayerConnected(playerid))// Проверка на подключение игрока
{
new string[64];// Массив с путём для файла
new pass[64];// Массив с паролем
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string,sizeof(string), "player/%s.ini", playername);// Добавляем имя игрока, в путь для загрузки
new iniFile = ini_openFile(string);// Открываем файл
ini_getString(iniFile,"Pass",pass,64);// Загружаем пароль
if(strcmp(pass,password,true) == 0)// Если введёный пароль, соответсвует паролю при регистрации, то загружаем акк
{
ini_getString(iniFile,"Pass",Player[playerid][pPass],64);// Загружаем пароль
ini_getInteger(iniFile,"Admin",Player[playerid][pAdmin]);// Загружаем уровень админа
ini_closeFile(iniFile);// Закрываем файл
}
else// Если пароль не верен..
{
ini_closeFile(iniFile);// Закрываем файл
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Авторизация", "{FFFFFF}Добро пожаловать на NAME\n{FFFFFF}Вы зарегестрированы\n\n{FFFFFF}Введите ваш пароль:", "Войти", "");
return 1;
}
SendClientMessage(playerid,0xFF00000,"Добро пожаловать на наш сервер");// Выводим игрок сообщение
SpawnPlayer(playerid);// Спавним игрока
}
return 1;
Еще сделла две команды, для назначения лидерки и админки, но на мои запросы команды шлют меня на все 16 =(
PHP код:
if (strcmp("/setadmin", cmdtext, true, 9) == 0)
{
new string[50], params[64];
if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, 0xAFAFAFAA, "Используйте: /setadmin [id игрока] [уровень]");
format(string, sizeof(string), "Вы были назнычены лидером организации \"%s\"", GetOrgName(PlayerInfo[params[0]][pLeader]));
SendClientMessage(params[0], 0xFFFF00AA, string);
PlayerInfo[params[0]][pAdmin] = params[1];
return 1;
}
if (strcmp("/setleader", cmdtext, true, 10) == 0)
{
new string[50], params[64];
if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, 0xAFAFAFAA, "Используйте: /setleader [id игрока] [id организации]");
format(string, sizeof(string), "Вы были назнычены лидером организации \"%s\"", GetOrgName(PlayerInfo[params[0]][pLeader]));
SendClientMessage(params[0], 0xFFFF00AA, string);
PlayerInfo[params[0]][pMember] = params[1];
PlayerInfo[params[0]][pLeader] = params[1];
PlayerInfo[params[0]][pRang] = 10;
return 1;
}
Последний раз редактировалось heralt; 11.03.2015 в 00:25.
Мой совет начинайте с базы данных (mysql) и сразу с DC_CMD, когда начнешь понимать в Pawn, и разберешься в структуре сервера поймешь что на файлах далеко не уедешь (Не вывести мониторинг сервера, не информацию об аккаунте на сайт)
DC_CMD с связкой scanff очень прост и удобен в использовании.
Если не убедил то почитай урок: ТЫК
Убедил почитай вот это: ТЫК и ТЫК
Думаю стоит попробывать DC_CMD.
На счет регистрации, проблему решил с сохранением. Тестирование проводил по команде, завтра буду переводить на DC_CMD.
На счет мускула, пока что не стану переписывать мод на мускул, я не силен в павно =(
PHP код:
if (strcmp("/rang", cmdtext, true, 10) == 0)
{
new params[4];
SendClientMessage(params[3], 0xFFFF00AA, "Тест.");
PlayerInfo[playerid][pRang] = 10;
PlayerInfo[playerid][pMember] = 3;
PlayerInfo[playerid][pAdmin] = 4;
return 1;
}
PHP код:
Pass = mdaamasmma
Admin = 4
Leader = 0
Member = 3
Rang = 10
PHP код:
stock SavePlayer(playerid)
{
new string[64];// Массив с путём для файла
new playername[MAX_PLAYER_NAME];// Массив для получения имени игрока
GetPlayerName(playerid, playername, sizeof(playername));// Получаем Имя игрока
format(string, sizeof(string), "player/%s.ini", playername);// Добавляем имя игрока, в путь для сохранения
new iniFile = ini_openFile(string);// Открываем файл по тому пути который указали.
ini_setString(iniFile,"Pass",Player[playerid][pPass]);// Записываем пароль игрока в файл
ini_setInteger(iniFile,"Admin",Player[playerid][pAdmin]);// Записываем уровень админа
ini_setInteger(iniFile,"Member", PlayerInfo[playerid][pMember]);
ini_setInteger(iniFile,"Rang", PlayerInfo[playerid][pRang]);
ini_closeFile(iniFile);// Закрываем файл
return 1;
Решив проблемы с регистрацией и остальными недоработками, я занялся доделкой Организацей и Рангов для них.
Проверив команду, ничего не работало =(
PHP код:
if (strcmp("/rang", cmdtext, true, 10) == 0)
{
new string[64], params[64];
format(string, sizeof(string), "Вы состоите в организации \"%s\"", GetOrgName(PlayerInfo[playerid][pMember]));
SendClientMessage(playerid, 0xFFFF00AA, string);
format(params, sizeof(params), "Ваш ранг: \"%s\"", GetRangName(PlayerInfo[playerid][pRang]));
SendClientMessage(playerid, 0xFFFF00AA, params);
return 1;
}
PHP код:
stock GetRangName(playerid)
{
new rangname[23];
switch(PlayerInfo[playerid][pMember])
{
case 1:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Охранник";
case 2: rangname = "Секретарь";
case 3: rangname = "Лицёнзер";
case 4: rangname = "Депутат";
case 5: rangname = "Управляющий СМИ";
case 6: rangname = "Министр Внутренних Дел";
case 7: rangname = "Министр Обороны";
case 8: rangname = "Премьер - Министр";
case 9: rangname = "Вице - Президент";
case 10: rangname = "Президент";
}
}
case 2:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Рядовой";
case 2: rangname = "Ефрейтор";
case 3: rangname = "Сержант";
case 4: rangname = "Cтаршина";
case 5: rangname = "Лейтенант";
case 6: rangname = "Капитан";
case 7: rangname = "Майор";
case 8: rangname = "Подполковник";
case 9: rangname = "Полковник";
case 10: rangname = "Генерал";
}
}
case 3:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Матрос";
case 2: rangname = "Мичман";
case 3: rangname = "Старшина";
case 4: rangname = "Лейтенант";
case 5: rangname = "Старпом";
case 6: rangname = "Капитан 3 ранга";
case 7: rangname = "Капитан 2 ранга";
case 8: rangname = "Капитан 1 ранга";
case 9: rangname = "Вице - Адмирал";
case 10: rangname = "Адмирал";
}
}
case 4:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Рядовой";
case 2: rangname = "Сержант";
case 3: rangname = "Ст.Сержант";
case 4: rangname = "Cтаршина";
case 5: rangname = "Лейтенант";
case 6: rangname = "Капитан";
case 7: rangname = "Майор";
case 8: rangname = "Подполковник";
case 9: rangname = "Полковник";
case 10: rangname = "Генерал";
}
}
case 5:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Ремонтник";
case 2: rangname = "Радиотехник";
case 3: rangname = "Наладчик";
case 4: rangname = "Оператор";
case 5: rangname = "Телемастер";
case 6: rangname = "Редактор";
case 7: rangname = "Репортёр";
case 8: rangname = "Режиссёр";
case 9: rangname = "Зам. Директора";
case 10: rangname = "Директор";
}
}
case 6:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Dipendente";
case 2: rangname = "Adjunto";
case 3: rangname = "Rapinatore";
case 4: rangname = "Asimilato";
case 5: rangname = "Armiere";
case 6: rangname = "Capo";
case 7: rangname = "Strada Boss";
case 8: rangname = "Delegato";
case 9: rangname = "Consigliere";
case 10: rangname = "Don";
}
}
case 7:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Кёдай";
case 2: rangname = "Томодати";
case 3: rangname = "Вакагасира";
case 4: rangname = "Ози-Хон";
case 5: rangname = "Оя-Дзи";
case 6: rangname = "Камбу";
case 7: rangname = "Со-Хонбутё";
case 8: rangname = "Оядзи";
case 9: rangname = "Сайко-Комон";
case 10: rangname = "Кумитё";
}
}
case 8:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Терпила";
case 2: rangname = "Шнырь";
case 3: rangname = "Носильщик";
case 4: rangname = "Шестёрка";
case 5: rangname = "Авторитет";
case 6: rangname = "Бригадир";
case 7: rangname = "Следящий";
case 8: rangname = "Блатной";
case 9: rangname = "Вор в Законе";
case 10: rangname = "Корон. Вор в Законе";
}
}
case 9:
{
switch(PlayerInfo[playerid][pRang])
{
case 1: rangname = "Nalakove";
case 2: rangname = "Аmicove";
case 3: rangname = "Dipendente";
case 4: rangname = "Razzionate";
case 5: rangname = "Contramaeestre";
case 6: rangname = "Teniente";
case 7: rangname = "Caposele";
case 8: rangname = "Capitan";
case 9: rangname = "Coronel";
case 10: rangname = "Autoritete";
}
}
}
return rangname;
}
PHP код:
[COLOR="#FF0000"][B]GetRangName(PlayerInfo[playerid][pRang])[/B][/COLOR]
PHP код:
GetRangName(playerid)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)