Автор: TheDarthPoezd aka TraniLurese
- Регистрация/Логин
- Смена пароля в диалоге
- Статистика игрока
{
= - Киллы
= - Смерти
= - Деньги
= - Сохранённые позиции
= - Проверка на Онлайн
= - Скин
}
- Сохранение позиции при выходе и смерти
- Телепорт командой на эти самые позиции
Также статистика проверяет на игроков - введя ник в диалог статистики, если существует, высветит полную статистику оффлайн игрока.
Команды:
Code: Select all
CMD - /changepass - Смена пароля
CMD - /gotooldpos - Телепорт на сохранённые в файле позиции
CMD - /mystats - Статистика о cебе
CMD - /pstats - Диалог с вводом ID - Статистика игрока или файла на сервер
- Код
Code: Select all
#define FILTERSCRIPT
#include <a_samp>
#include <Dini>
#if defined FILTERSCRIPT
#undef MAX_PLAYERS
#define MAX_PLAYERS 30 //Укажите тут число, равное числу слотов на вашем сервере.
new Death[MAX_PLAYERS];
new Online[MAX_PLAYERS];
new pname[25], Float:X, Float:Y, Float:Z;
new string1[29];
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, pname, sizeof(pname));
format(string1, 29, "%s.txt", pname);
if(!dini_Exists(string1))
{
ShowPlayerDialog(playerid, 1234, DIALOG_STYLE_INPUT, "Регистрация", "Чтобы зарегистрироваться:\n - Придумайте пароль\n - Впишите его ниже.", "Готово", "Выход");
return 1;
}
else if(dini_Exists(string1))
{
ShowPlayerDialog(playerid, 1235, DIALOG_STYLE_INPUT, "Логин", "Введите свой пароль ниже.", "Готово", "Выход");
return 1;
}
return 1;
}
public OnPlayerSpawn(playerid)
{
GetPlayerName(playerid, pname, sizeof(pname));
format(string1, 29, "%s.txt", pname);
SetPlayerSkin(playerid, dini_Int(string1, "Skin"));
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
Online[playerid] = 0;
dini_BoolSet(string1, "Online", Online[playerid]);
GetPlayerName(playerid, pname, sizeof(pname));
format(string1, 29, "%s.txt", pname);
dini_IntSet(string1, "Money", GetPlayerMoney(playerid));
dini_IntSet(string1, "Score", GetPlayerScore(playerid));
GetPlayerPos(playerid, X, Y, Z);
dini_FloatSet(string1, "X", X);
dini_FloatSet(string1, "Y", Y);
dini_FloatSet(string1, "Z", Z);
dini_IntSet(string1, "Death", Death[playerid]);
dini_IntSet(string1, "Skin", GetPlayerSkin(playerid));
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
GetPlayerName(playerid, pname, sizeof(pname));
format(string1, 29, "%s.txt", pname);
Death[playerid]++;
SetPlayerScore(killerid, GetPlayerScore(killerid)+1);
GetPlayerPos(playerid, X, Y, Z);
dini_IntSet(string1, "Skin", GetPlayerSkin(playerid));
dini_FloatSet(string1, "X", X);
dini_FloatSet(string1, "Y", Y);
dini_FloatSet(string1, "Z", Z);
return 1;
}
public OnPlayerUpdate(playerid)
{
GetPlayerName(playerid, pname, sizeof(pname));
format(string1, 29, "%s.txt", pname);
dini_IntSet(string1, "Money", GetPlayerMoney(playerid));
dini_IntSet(string1, "Score", GetPlayerScore(playerid));
dini_IntSet(string1, "Death", Death[playerid]);
dini_IntSet(string1, "Skin", GetPlayerSkin(playerid));
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/changepass", true) == 0)
{
ShowPlayerDialog(playerid, 1236, DIALOG_STYLE_INPUT, "Смена пароля", "Введите текущий пароль", "Готово", "Выход");
return 1;
}
if(strcmp(cmdtext, "/gotooldpos", true) == 0)
{
GetPlayerName(playerid, pname, sizeof(pname));
format(string1, 29, "%s.txt", pname);
SetPlayerPos(playerid, dini_Float(string1, "X"), dini_Float(string1, "Y"), dini_Float(string1, "Z"));
return 1;
}
if(strcmp(cmdtext, "/mystats", true) == 0)
{
new stats[256], fass[256];
GetPlayerName(playerid, pname, sizeof(pname));
format(string1, 29, "%s.txt", pname);
strcat(stats, "Ваш ник: %s (%d)\n");
strcat(stats, "Ваши очки: %d\n");
strcat(stats, "Ваши смерти: %d\n");
strcat(stats, "Ваши деньги: %d\n");
strcat(stats, "Ваш скин: %d\n");
strcat(stats, "Ваш статус: {00ff00}Онлайн");
format(fass, 256, stats, pname, playerid, dini_Int(string1, "Score"), dini_Int(string1, "Death"), dini_Int(string1, "Money"), dini_Int(string1, "Skin"));
ShowPlayerDialog(playerid, 292, DIALOG_STYLE_MSGBOX, "Ваша статистика", fass, "Ок", "");
return 1;
}
if(strcmp(cmdtext, "/pstats", true) == 0)
{
ShowPlayerDialog(playerid, 293, DIALOG_STYLE_INPUT, "Статистика игрока", "Введите ID/Имя игрока", "Ок", "Выход");
return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
GetPlayerName(playerid, pname, sizeof(pname));
format(string1, 29, "%s.txt", pname);
if(dialogid == 293)
{
if(response)
{
if(Numbers(inputtext))
{
if(IsPlayerConnected(strval(inputtext)))
{
new string23[29], pname2[25];
GetPlayerName(strval(inputtext), pname2, sizeof(pname2));
format(string23, 29, "%s.txt", pname2);
new stats[256], fass[256];
strcat(stats, "Ник: %s (%d)\n");
strcat(stats, "Очки: %d\n");
strcat(stats, "Смерти: %d\n");
strcat(stats, "Деньги: %d\n");
strcat(stats, "Скин: %d\n");
strcat(stats, "Статус: {00ff00}Онлайн");
format(fass, 256, stats, pname2, strval(inputtext), dini_Int(string23, "Score"), dini_Int(string23, "Death"), dini_Int(string23, "Money"), dini_Int(string23, "Skin"));
ShowPlayerDialog(playerid, 292, DIALOG_STYLE_MSGBOX, "Cтатистика игрока", fass, "Ок", "");
}
else SendClientMessage(playerid, 0xFF0000FF, "Данный игрок оффлайн");
}
else
{
new string12[29];
format(string12, 29, "%s.txt", inputtext);
if(dini_Exists(string12))
{
new stats[256], fass[256];
strcat(stats, "Ник: %s\n");
strcat(stats, "Очки: %d\n");
strcat(stats, "Смерти: %d\n");
strcat(stats, "Деньги: %d\n");
strcat(stats, "Скин: %d\n");
if(dini_Bool(string12, "Online") == 1) strcat(stats, "Статус: {00ff00}Онлайн");
else if(dini_Bool(string12, "Online") == 0) strcat(stats, "Статус: {ff0000}Оффлайн");
format(fass, 256, stats, dini_Get(string12, "Name"), dini_Int(string12, "Score"), dini_Int(string12, "Death"), dini_Int(string12, "Money"), dini_Int(string12, "Skin"));
ShowPlayerDialog(playerid, 292, DIALOG_STYLE_MSGBOX, "Cтатистика игрока", fass, "Ок", "");
}
else SendClientMessage(playerid, 0xFF0000FF, "Данный игрок не найден");
}
}
else return 1;
}
if(dialogid == 1234)
{
if(response)
{
if(strval(inputtext) > 10)
{
SendClientMessage(playerid, 0xFF0000FF, "Пароль должен быть меньше 10 символов");
ShowPlayerDialog(playerid, 1234, DIALOG_STYLE_INPUT, "Регистрация", "Чтобы зарегистрироваться:\n - Придумайте пароль\n - Впишите его ниже.", "Готово", "Выход");
return 1;
}
else
{
new password[10], string2[100];
GetPlayerPos(playerid, X, Y, Z);
Death[playerid] = 0;
dini_Create(string1);
format(password, 10, "%s", inputtext);
format(string2, 100, "Ваш пароль - %s", inputtext);
dini_Set(string1, "Name", pname);
dini_Set(string1, "Password", inputtext);
dini_IntSet(string1, "Money", GetPlayerMoney(playerid));
dini_IntSet(string1, "Score", GetPlayerScore(playerid));
dini_IntSet(string1, "Death", Death[playerid]);
dini_IntSet(string1, "Skin", GetPlayerSkin(playerid));
dini_FloatSet(string1, "X", X);
dini_FloatSet(string1, "Y", Y);
dini_FloatSet(string1, "Z", Z);
dini_BoolSet(string1, "Online", Online[playerid]);
SendClientMessage(playerid, 0x00FF00FF, "Вы успешно зарегистрированы");
SendClientMessage(playerid, 0x00FF00FF, string2);
return 1;
}
}
else ShowPlayerDialog(playerid, 1234, DIALOG_STYLE_INPUT, "Регистрация", "Чтобы зарегистрироваться:\n - Придумайте пароль\n - Впишите его ниже.", "Готово", "Выход");
}
if(dialogid == 1235)
{
if(response)
{
new pw[200];
format(pw, sizeof(pw), "%s", dini_Get(string1, "Password"));
if(strcmp(inputtext, pw) != 0)
{
SendClientMessage(playerid, 0xFF0000FF, "Пароль не верный");
ShowPlayerDialog(playerid, 1235, DIALOG_STYLE_INPUT, "Логин", "Введите свой пароль ниже.", "Готово", "Выход");
return 1;
}
else
{
SetPlayerMoney(playerid, dini_Int(string1,"Money"));
SetPlayerScore(playerid, dini_Int(string1,"Score"));
dini_Int(string1, "Death");
SendClientMessage(playerid, 0x00FF00FF, "Пароль верный. Вы успешно вошли");
Online[playerid] = 1;
dini_BoolSet(string1, "Online", Online[playerid]);
return 1;
}
}
else ShowPlayerDialog(playerid, 1235, DIALOG_STYLE_INPUT, "Логин", "Введите свой пароль ниже.", "Готово", "Выход");
}
if(dialogid == 1236)
{
if(response)
{
new pw[200];
format(pw, sizeof(pw), "%s", dini_Get(string1, "Password"));
if(strcmp(inputtext, pw) != 0)
{
SendClientMessage(playerid, 0xFF0000FF, "Пароль не верный.");
return 1;
}
else
{
SendClientMessage(playerid, 0x00FF00FF, "Пароль верный");
ShowPlayerDialog(playerid, 1237, DIALOG_STYLE_INPUT, "Смена пароля", "Введите новый пароль", "Готово", "Выход");
}
}
}
if(dialogid == 1237)
{
if(response)
{
if(strval(inputtext) > 10)
{
SendClientMessage(playerid, 0xFF0000FF, "Пароль должен быть меньше 10 символов");
ShowPlayerDialog(playerid, 1237, DIALOG_STYLE_INPUT, "Смена пароля", "Введите новый пароль", "Готово", "Выход");
return 1;
}
else
{
new password[10], string3[100];
format(password, 10, "%s", inputtext);
format(string3, 100, "Ваш новый пароль - %s", inputtext);
dini_Set(string1, "Password", inputtext);
SendClientMessage(playerid, 0x00FF00FF, "Вы успешно сменили пароль");
SendClientMessage(playerid, 0x00FF00FF, string3);
return 1;
}
}
}
return 1;
}
stock SetPlayerMoney(playerid, money)
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, money);
return 0;
}
stock Numbers(string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
}
#endif