(FS) Регистрация на Dini

Описание: Готовые решения скриптов, filterScript
Модератор: SJplayer

SJplayer M
Автор темы, Модератор
Модератор
Аватара
SJplayer M
Автор темы, Модератор
Модератор
Сообщения: 196
Зарегистрирован: 25 мая 2013
С нами: 10 лет 10 месяцев

#1 SJplayer » 5 июля 2013, 9:22

(FS) Регистрация на Dini
Автор: TheDarthPoezd aka TraniLurese

Изображение Изображение


- Регистрация/Логин
- Смена пароля в диалоге
- Статистика игрока
{
= - Киллы
= - Смерти
= - Деньги
= - Сохранённые позиции
= - Проверка на Онлайн
= - Скин
}
- Сохранение позиции при выходе и смерти
- Телепорт командой на эти самые позиции
Также статистика проверяет на игроков - введя ник в диалог статистики, если существует, высветит полную статистику оффлайн игрока.

Команды:

Код: Выделить всё

CMD - /changepass - Смена пароля 
CMD 
- /gotooldpos - Телепорт на сохранённые в файле позиции 
CMD 
- /mystats - Статистика о cебе 
CMD 
- /pstats - Диалог с вводом ID - Статистика игрока или файла на сервер


Код

Код: Выделить всё

#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  


Вернуться в «Скрипты / FS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 4 гостя