Перейти к содержанию
Авторизация  
Predator

Динамическая система бизнесов

Рекомендуемые сообщения

Predator

Нашел на просторах интернета динамическую систему бизнесов. Проверено на моде GTRP и new.pwn.
Для начала ко всем enum добавим:

enum bInfo
{
    bBusName[64],
    bOwner[MAX_PLAYER_NAME],
    bPrice,
    bLock,
    bInterior,
    bVirtWorld,
    bPick,
    Text3D:bText,
    Float:bX,
    Float:bY,
    Float:bZ
};
new BusinessInfo[250][bInfo];//250 макс. кол-во бизнесов


new AllBiz;//всего бизнесов
new LString[128];
enum biInfo//информация берётся из bInts
{
    biInt,
    Float:biX,
    Float:biY,
    Float:biZ,
    biName[15],
}
new bInts[][biInfo]=
{
    {4,457.304748,-88.428497,999.554687,"Название бизнеса"},//4 это инт,дальше координаты появления в интерьере и название бизнеса
    {5,454.973937,-110.104995,1000.077209,"Своё название"},
    {15,207.737991,-109.019996,1005.132812,"Своё название"},
    {5,226.293991,-7.431529,1002.210937,"Своё название"},
    {4,286.800994,-82.547599,1001.515625,"Своё название"},
    {5,772.111999,-3.898649,1000.728820,"Своё название"},
    {15,2215.454833,-1147.475585,1025.796875,"Своё название"},
    {2,1204.809936,-11.586799,1000.921875,"Своё название"},
    {17,493.390991,-22.722799,1000.679687,"Своё название"}};

Далее в конец мода:

stock LoadBiz()
{
new ids[32],str[64];
new iniOpens = ini_openFile("biz.cfg");
ini_getInteger(iniOpens, "AllBiz", AllBiz);
ini_closeFile(iniOpens);
if(AllBiz != 0)
{
   for(new biz = 1; biz <= AllBiz; biz++)
   {
       format(ids,sizeof(ids),"biz/%d.ini",biz);
       new inihOpen = ini_openFile(ids);
       ini_getString(inihOpen, "bBusName", str); format(BusinessInfo[biz][bBusName],24,"%s",str);
       ini_getString(inihOpen, "bOwner", str); format(BusinessInfo[biz][bOwner],24,"%s",str);
       ini_getInteger(inihOpen, "bPrice", BusinessInfo[biz][bPrice]);
ini_getInteger(inihOpen, "bLock", BusinessInfo[biz][bLock]);
ini_getInteger(inihOpen, "bInterior", BusinessInfo[biz][bInterior]);
ini_getInteger(inihOpen, "bVirtWorld", BusinessInfo[biz][bVirtWorld]);
ini_getFloat(inihOpen, "bX", BusinessInfo[biz][bX]);
ini_getFloat(inihOpen, "bY", BusinessInfo[biz][bY]);
ini_getFloat(inihOpen, "bZ", BusinessInfo[biz][bZ]);
ini_closeFile(inihOpen);
if(!strcmp(BusinessInfo[biz][bOwner],"Nones",true))//Если нет владельца
        {
            BusinessInfo[biz][bPick] = CreatePickup(1274, 23, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ], 0);//Создаём Пикап
            format(LString,128,"Бизнес\n%s\nЦена: $%d", BusinessInfo[biz][bBusName], BusinessInfo[biz][bPrice]);//Форматируем
            BusinessInfo[biz][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ] + 0.5, 10.0, 0, 0);//Создаём 3DText
        }
        else//Иначе
        {
            BusinessInfo[biz][bPick] = CreatePickup(1274, 23, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ],0);//Создаём Пикап
            format(LString, 128, "Бизнес\n%s\nВладелец: %s", BusinessInfo[biz][bBusName],BusinessInfo[biz][bOwner]);//Форматируем
            BusinessInfo[biz][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, BusinessInfo[biz][bX], BusinessInfo[biz][bY], BusinessInfo[biz][bZ] +0.5, 10.0, 0, 0);//Создаём 3DText
        }
    }
   printf("Бизнесов загружено: %d",AllBiz);
}
return 1;
}
stock UpdateBusiness(b)
{
    DestroyPickup(BusinessInfo[b][bPick]);//Удаляем Пикап
    if(!strcmp(BusinessInfo[b][bOwner],"Nones",true))//Если нет владельца
    {
        BusinessInfo[b][bPick] = CreatePickup(1274, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ],0);//Создаём Пикап
        format(LString, 128, "Бизнес\n%s\nЦена: $%d", BusinessInfo[b][bBusName], BusinessInfo[b][bPrice]);//Форматируем
        Update3DTextLabelText(BusinessInfo[b][bText],0xFFFFFFFF,LString);//Обновляем 3DText
    }
    else//Иначе
    {
        BusinessInfo[b][bPick] = CreatePickup(1274, 23, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ], 0);//Создаём Пикап
        format(LString,128,"Бизнес\n%s\nВладелец: %s",BusinessInfo[b][bBusName],BusinessInfo[b][bOwner]);//Форматируем
        Update3DTextLabelText(BusinessInfo[b][bText],0xFFFFFFFF,LString);//Обновляем 3DText
    }
}
stock SaveBusiness(biz)
{
new ids[32];
    format(ids,sizeof(ids),"biz/%d.ini",biz);
    new inihOpen;
inihOpen = ini_openFile(ids);
    if(inihOpen == -1 || inihOpen == -2) inihOpen = ini_createFile(ids);
    ini_setString(inihOpen, "bBusName", BusinessInfo[biz][bBusName]);
    ini_setString(inihOpen, "bOwner", BusinessInfo[biz][bOwner]);
ini_setInteger(inihOpen, "bPrice", BusinessInfo[biz][bPrice]);
ini_setInteger(inihOpen, "bLock", BusinessInfo[biz][bLock]);
ini_setInteger(inihOpen, "bInterior", BusinessInfo[biz][bInterior]);
ini_setInteger(inihOpen, "bVirtWorld", BusinessInfo[biz][bVirtWorld]);
ini_setFloat(inihOpen, "bZ", BusinessInfo[biz][bZ]);
ini_setFloat(inihOpen, "bX", BusinessInfo[biz][bX]);
ini_setFloat(inihOpen, "bY", BusinessInfo[biz][bY]);
ini_closeFile(inihOpen);
return 1;
}

В OnGameModeInit:

LoadBiz();

Далее добавим несколько команд, для этого в OnPlayerCommandText добавим:

if(strcmp("/benter", cmdtext, true, 6) == 0)
{
    for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов
    {
        if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;
        if(strcmp(BusinessInfo[b][bOwner],GN(playerid), true) !=0 && BusinessInfo[b][bLock] == 1) return SendClientMessage(playerid,-1,"Бизнес закрыт.");//Если закрыт
        SetPlayerPos(playerid, bInts[BusinessInfo[b][bInterior]][biX], bInts[BusinessInfo[b][bInterior]][biY], bInts[BusinessInfo[b][bInterior]][biZ]);//Устанавливаем позицию игроку
        SetPlayerInterior(playerid, bInts[BusinessInfo[b][bInterior]][biInt]);//Устанавливаем интерьер игроку
        SetPlayerVirtualWorld(playerid, BusinessInfo[b][bVirtWorld]);//Устанавливаем виртуальный мир игроку
    }
    return true;
}
if(strcmp("/bexit", cmdtext, true, 5) == 0)
{
    for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов
    {
        if(IsPlayerInRangeOfPoint(playerid, 5.0, bInts[BusinessInfo[b][bInterior]][biX], bInts[BusinessInfo[b][bInterior]][biY], bInts[BusinessInfo[b][bInterior]][biZ]) && GetPlayerVirtualWorld(playerid) == BusinessInfo[b][bVirtWorld])//Если в радиусе 5 метров от выхода((Координат входа))
        {
            SetPlayerPos(playerid, BusinessInfo[b][bX],BusinessInfo[b][bY],BusinessInfo[b][bZ]);//Устанавливаем позицию игроку
            SetPlayerVirtualWorld(playerid,0);//Устанавливаем виртуальный мир игроку
            SetPlayerInterior(playerid,0);//Устанавливаем интерьер игроку
        }
    }
    return true;
}
if(strcmp("/buybus", cmdtext, true, 9) == 0)
{
    for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов
    {
        if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;
        if(PlayerInfo[playerid][pMoney] < BusinessInfo[b][bPrice]) return SendClientMessage(playerid,-1,"У вас не достаточно наличных средств, для покупки."); //Если не достаточно денег
        if(strcmp(BusinessInfo[b][bOwner], "Nones",true) != 0) return SendClientMessage(playerid,-1,"Бизнес не продаётся."); //Если есть Владелец
        strmid(BusinessInfo[b][bOwner], GN(playerid), 0, 24, 24);//Устанавливаем Владельца
        UpdateBusiness(b);//Обновляем
        SaveBusiness(b); //Сохраняем
        GivePlayerMoney(playerid,-BusinessInfo[b][bPrice]); //Отнимаем сумму
        SendClientMessage(playerid,-1,"Поздравляем с покупкой");
        return true;
    }
    SendClientMessage(playerid,-1,"Подойдите к Бизнесу который желаете купить.");
    return true;
}
if(strcmp("/sellbus", cmdtext, true, 10) == 0)
{
    for(new b = 1; b <= AllBiz; b++)//Для всех Бизнесов
    {
        if(!IsPlayerInRangeOfPoint(playerid, 1.5, BusinessInfo[b][bX], BusinessInfo[b][bY], BusinessInfo[b][bZ])) continue;
        if(!strcmp(BusinessInfo[b][bOwner], GN(playerid), true))
        {
            strmid(BusinessInfo[b][bOwner], "Nones", 0, 5, 5);//Убираем владельца с Бизнеса
            UpdateBusiness(b);//Обновляем
            SaveBusiness(b);//Сохраняем
            GivePlayerMoney(playerid,BusinessInfo[b][bPrice]/2);//Даём игроку 1/2 стоимости Бизнеса
            SendClientMessage(playerid,-1,"Вы продали свой Бизнес государству. За 1/2 его стоимости.");
            return true;
        }
    }
    return true;
}
if(strcmp("/addbus", cmdtext, true, 13) == 0)
{
    if(PlayerInfo[playerid][pAdministrator] == 10)
    {
        return ShowPlayerDialog(playerid,2000,DIALOG_STYLE_INPUT,"Название","Введите название:","Далее","Отмена");//Выводим Диалог
    }
}

Далее добавим диалоги, для этого в OnDialogResponse вставим:

if(dialogid == 2000)
    {
        if(response)//Если продолжаем
        {
            if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2000, DIALOG_STYLE_INPUT, "Название", "Введите название:", "Далее","Отмена");//Если не введено - повторяем
            SetPVarString(playerid, "b_name", inputtext);//Записываем
            ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость Бизнеса:", "Далее", "Отмена");//Показываем Диалог с Ценой
        }
    }
    if(dialogid == 2001)
    {
        if(response)//Если продолжаем
        {
            if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость бизнеса:","Далее","Назад");//Если не введено - повторяем
            SetPVarInt(playerid, "b_price", strval(inputtext));
            LString = "";
            for(new i; i < sizeof(bInts); i++)
            {
                strcat(LString, bInts[i][biName]);
                strcat(LString, "\n");
            }
            ShowPlayerDialog(playerid, 2002, DIALOG_STYLE_LIST, "Интерьер", LString, "Далее", "Назад");//Показываем Диалог с выбором Интерьера
        }
        else DeletePVar(playerid, "b_name"), ShowPlayerDialog(playerid, 2000, DIALOG_STYLE_INPUT, "Название","Введите название:", "Далее", "Отмена");//Иначе
    }
    if(dialogid == 2002)
    {
        if(response)//Если продолжаем
        {
            SetPVarInt(playerid, "b_int", listitem);
            ShowPlayerDialog(playerid, 2003, DIALOG_STYLE_MSGBOX, "Подтверждение", "Вы действительно желаете создать Бизнес?", "V", "X");//Подтверждаем
        }
        else DeletePVar(playerid, "b_price"), ShowPlayerDialog(playerid, 2001, DIALOG_STYLE_INPUT, "Стоимость", "Введите стоимость Бизнеса:", "Далее", "Назад");//Иначе
    }
    if(dialogid == 2003)
    {
        if(response)//Если продолжаем
        {
            AllBiz++;//КОл-во Бизнесов плюсуем
            new inihOpen = ini_openFile("biz.cfg");
ini_setInteger(inihOpen, "AllBiz", AllBiz);
ini_closeFile(inihOpen);
            new Float:x[3], str[64];
            GetPlayerPos(playerid, x[0], x[1], x[2]);//Получаем позицию
            GetPVarString(playerid, "b_name", str, 64);
            BusinessInfo[AllBiz][bX] = x[0];//Присваиваем Координату X
            BusinessInfo[AllBiz][bY] = x[1];//Присваиваем Координату Y
            BusinessInfo[AllBiz][bZ] = x[2];//Присваиваем Координату Z
            BusinessInfo[AllBiz][bPrice] = GetPVarInt(playerid, "b_price");//Присваиваем Цену
            BusinessInfo[AllBiz][bInterior] = GetPVarInt(playerid, "b_int");//Присваиваем Интерьер
            BusinessInfo[AllBiz][bVirtWorld] = AllBiz;//Присваиваем Виртуальный Мир
            strmid(BusinessInfo[AllBiz][bBusName], str, 0, 32, 32);//Присваиваем Имя
            strmid(BusinessInfo[AllBiz][bOwner], "Nones", 0, 24, 24);//Присваиваем Владельца "Nones"
            SaveBusiness(AllBiz);//Сохраняем
            BusinessInfo[AllBiz][bPick] = CreatePickup(1274,23,x[0],x[1],x[2],0);//Создаём Пикап
            format(LString, 128, "Бизнес\n%s\nЦена: $%d", BusinessInfo[AllBiz][bBusName], BusinessInfo[AllBiz][bPrice]);//Форматируем
            BusinessInfo[AllBiz][bText] = Create3DTextLabel(LString, 0xFFFFFFFF, x[0], x[1], x[2] + 0.5, 10.0, 0, 0);//Создаём 3DText
            GameTextForPlayer(playerid, "~w~Бизнес ~g~Создан",100,1);
            DeletePVar(playerid, "b_price");
            DeletePVar(playerid, "b_name");
            DeletePVar(playerid, "b_int");
        }
        else DeletePVar(playerid,"b_price"), DeletePVar(playerid, "b_name"), DeletePVar(playerid, "b_int");//Иначе
    }

В папке scriptfiles создайте файл biz.cfg и впишите туда allbiz = 0. И создайте папку biz, туда они будут сохранятся.
Автор: Лев Попов
Автор переделки: Basis

 

 

 

 

  • Like 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
EgasVegas

Где скрины?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Predator

Где скрины?

Я лично не тестил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
EgasVegas

А может и не работает, зачем выкладывать если и не тестил -_-

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Predator

А может и не работает, зачем выкладывать если и не тестил -_-

Написано же, проверено на new.pwn и gtrp. Автор переделки Basis, тестил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Rustyk

new GN[MAX_PLAYERS];

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Basis

вот сток что бы не было ошибок с GN

stock GN(playerid)
{
        new Name[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Name, sizeof Name);
        return Name;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis_Ivanovici

Есть проблема!добавь пожалуйста в скайп aezakmi100000, так как выдаёт у команд со строками GN.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis_Ivanovici

Вот сама проблема : 

C:\Users\???\Desktop\crmp\gamemodes\new.pwn(26979) : error 012: invalid function call, not a valid address
C:\Users\???\Desktop\crmp\gamemodes\new.pwn(26979) : warning 215: expression has no effect
C:\Users\???\Desktop\crmp\gamemodes\new.pwn(26979) : error 001: expected token: ";", but found ")"
C:\Users\???\Desktop\crmp\gamemodes\new.pwn(26979) : error 029: invalid expression, assumed zero
C:\Users\???\Desktop\crmp\gamemodes\new.pwn(26979) : fatal error 107: too many error messages on one line
 
Сами строки:
if(strcmp(BusinessInfo[bOwner],GN(playerid), true) !=0 && BusinessInfo[bLock] == 1) return SendClientMessage(playerid,-1,"Бизнес закрыт.");//Если закрыт
 
 strmid(BusinessInfo[bOwner], GN(playerid), 0, 24, 24);//Устанавливаем Владельца      
 
 
if(!strcmp(BusinessInfo[bOwner], GN(playerid), true))
Изменено пользователем Denis_Ivanovici

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Denis_Ivanovici

Всё СДЕЛАЛ,Бизнесы не лучше! Не ставите, ТУПО НЕТУ ИНТЕРЬЕРОВ и нигде ничего нельзя купить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Red_Devils

Ну смысл от этой системы? Её же дописывать надо...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
vovasty

 

 


А что ты хотел ? Всё нужно дописывать. Тебе дали основу от чего оталкиваться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

Есть ерроры! Как можно исправить подскажите!

 

ошибка

P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(653) : error 021: symbol already defined: "bOwner"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(679) : warning 228: length of initialler exceeds size of the enum field
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(679) : error 018: initialization data exceeds declared size
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(43233) : warning 219: local variable "Name" shadows a variable at a preceding level
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(43238) : error 021: symbol already defined: "LoadBiz"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.

Вот строки

653 -  bOwner[MAX_PLAYER_NAME],
679 - {4,457.304748,-88.428497,999.554687,"Название бизнеса"},
43233 -         new Name[MAX_PLAYER_NAME];
43238 - { (перед символом stock LoadBiz() )
43295 - format(ids,sizeof(ids),"biz/%d.ini",biz); (это варнинг)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

С остальными я исправил,но остались вот эти ерроры 

P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(653) : error 021: symbol already defined: "bOwner"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(43233) : warning 219: local variable "Name" shadows a variable at a preceding level
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


1 Errors.

Думаю строки понятны какие!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Lev_Elistratov

 

 



P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(653) : error 021: symbol already defined: "bOwner" - bOwner уже где-то у тебя объявлен.

P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(43233) : warning 219: local variable "Name" shadows a variable at a preceding level - тут, где-то у тебя есть "Name" и нужно удалить этот.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

@Lev_Elistratov,А то я тупой такой что это типо повторяются переменные! если элементарно я удалю даже  bOwner[MAX_PLAYER_NAME] то у меня уже будет вот эти ошибки

P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(654) : error 021: symbol already defined: "bPrice"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(679) : warning 228: length of initialler exceeds size of the enum field
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(679) : error 018: initialization data exceeds declared size
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(43199) : warning 219: local variable "Name" shadows a variable at a preceding level
Pawn compiler 3.2.3664              Copyright © 1997-2006, ITB CompuPhase
 
 
2 Errors.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

Не могу соединить сообщения! Остался 1 варн! Кто знает как исправить?

P:\Мой сервер\Сам мод\gamemodes\cream1.2.pwn(43222) : warning 219: local variable "Name" shadows a variable at a preceding level
Pawn compiler 3.2.3664              Copyright © 1997-2006, ITB CompuPhase
 
Header size:          10556 bytes
Code size:          4081628 bytes
Data size:          2987076 bytes
Stack/heap size:      16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements: 7095644 bytes
 
1 Warning.

на сток

stock GN(playerid)
{
        new Name[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Name, sizeof Name);
        return Name;
}

на строку new Name[MAX_PLAYER_NAME];

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Lev_Elistratov

warning 219

Где-то у тебя есть "Name" и нужно либо удалить либо переименовать в этом стоке все "Name".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

@Lev_Elistratov,А в что мне переименовать? Точнее во что в какую переменную можно? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Lev_Elistratov
,в любую, тут это не имеет значения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

@Lev_Elistratov,Это как я понимаю просто в стоке можно написать Namo и все да? То есть вот так:

stock GN(playerid)
{
        new Namo[MAX_PLAYER_NAME];
        GetPlayerNamo(playerid, Namo, sizeof Namo);
        return Namo;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Lev_Elistratov

,да! 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

Блин делал,делал данный мануал и только сейчас понимаю! Т.е если кто то купит данный бизне то с него прибыли вообще ни какой не будет? Так как я только что заметил что нет ни что по данной теме!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.