Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: Пишем мод с нуля (MySQL R7, 0.3x)

  1. #1
    Проверенный Аватар для ViperXXX
    Регистрация
    27.05.2010
    Адрес
    Россия, Иваново
    Возраст
    27
    Сообщений
    567
    Репутация: 26

    Звание: на пути к лучшему

    Пишем мод с нуля (MySQL R7, 0.3x)

    Доброго здоровьица, павновчане! Нашел на просторах интернета свежий урок по написанию мода. Надеюсь, автор не забросит то, что начал.
    Итак, начнем!

    Приветствую вас, дорогие скриптеры pawn.
    В этой серии уроков я подробно буду описывать как написать свой Role Play мод с нуля, для тех кто только-что узнал что такое PAWN. Начнем!
    Глава I. Файлы, программы нужные нам

    Для начала нам понадобится сам сервер. ( http://files.sa-mp.com/samp03x_svr_R1-2_win32.zip )
    Распаковываем все содержимое архива в удобную нам папку.
    Далее открываем файл server.cfg (блокнотом) и меняем нужные нам данные на свои, а именно:

    PHP код:
    echo Executing Server Config... 
    lanmode 0 // Не меняем! 
    rcon_password changeme // Обязательно меняем, или сервер не запустится 
    maxplayers 50 // Меняем на свое значение ( максимальное кол-во игроков, до 500 ) 
    port 7777 // Порт ( по умолчанию 7777 ) 
    hostname SA-MP 0.3 Server // Название сервера 
    gamemode0 grandlarc 1 // Название мода, меняем на своё ( У нас это будет new.pwn, Значит меняем grandlarc на new ) 
    filterscripts gl_actions gl_realtime gl_property gl_mapicon ls_mall attachments skinchanger vspawner // Удаляем: gl_actions gl_realtime gl_property gl_mapicon ls_mall attachments skinchanger vspawner 
    announce 0 // Не меняем 
    query 1 // Не меняем 
    chatlogging 0 // Не меняем 
    weburl www.sa-mp.com // Web-адресс сервера 
    onfoot_rate 40 // Не меняем 
    incar_rate 40 // Не меняем 
    weapon_rate 40 // Не меняем 
    stream_distance 300.0 // Не меняем 
    stream_rate 1000 // Не меняем 
    maxnpc 0 // Не меняем 
    logtimeformat [%H:%M:%S// Не меняем 
    Поменяли? Но это ещё не все, приписываем ко всему строку:

    PHP код:
    plugins streamer sscanf mysql 
    - Это плагины, объясню позже
    У нас получиться что-то вроде этого:

    PHP код:
    echo Executing Server Config... 
    lanmode 0 
    rcon_password 12345  
    maxplayers 500 
    port 7777 
    hostname 
    New RP Client0.3x 
    gamemode0 
    new 
    filterscripts  
    announce 0 
    query 1 
    chatlogging 0 
    weburl www

    onfoot_rate 40 
    incar_rate 40 
    weapon_rate 40 
    stream_distance 300.0 
    stream_rate 1000 
    maxnpc 0 
    logtimeformat 
    [%H:%M:%S
    plugins streamer sscanf mysql 
    И так, если вы хотите чтобы ваш мод работал правильно, то вам понадобятся плагины такие как streamer, но так как мы будем писать мод на MySQL, нам понадобятся следующие плагины:

    Стример
    1. Streamer.inc, который лежит в папке pawno/include закидываем к себе в папку pawno/include вашего сервера.
    2. Streamer.dll, который лежит в папке plugins закидываем в папку plugins вашего сервера. Примечание: Если сервер находиться на оси Linux, то закидываем Streamer.so, в server.cfg все плагины должны быть написаны с расширением .so.
    Например: Streamer.so
    Ну все. Нам нужны только эти два файла.
    Sscanf - папку sscanf внутри можете не закидывать в папку с модом.
    1. sscanf2.inc, который лежит в папке pawno/include закидываем к себе в папку pawno/include вашего сервера.
    2. sscanf2.dll, который лежит в папке plugins закидываем в папку plugins вашего сервера.
    MySQL R7 - Мы будем использовать плагин R7
    1. a_mysql.inc закидываем к себе в папку pawno/include вашего сервера.
    2. mysql.dll закидываем в папку plugins вашего сервера.
    Этот файл обязательно кидаем в папку с сервером
    Денвер - И самое главное, это Denwer (Denwer обеспечит нам Базу Данных MySQL PhpMyAdmin).
    Устанавливаем Denwer. Думаю, вопросы по его установке не возникнут.

    Глава II. Начинаем работу

    И так, установили Denwer, закинули плагины? Тогда поехали.

    Для начала заходим в папку своего сервера, видим там другую папку "pawno", заходим в неё. Далее заходим в саму программу pawno.exe
    Давайте начнем писать наш мод. Нажмем на самую первую иконку "New". Мы создали новый мод, если мы сохраним его под названием "new" в папку "gamemodes" запустим сервер и зайдем на него ( для захода используйте IP: 127.0.0.1 ), то увидим всем знакомого негра CJ в районе Лас Вентураса, как мы видим это ещё не совсем Role Play мод, так давайте его уже наконец начнем делать!
    Идем в pawno и начинаем работу...
    Для начала давайте впишем наши инклуды таким образом:
    После строки:
    #include <a_samp>

    Вставляем:
    #include <streamer> 
    #include <sscanf2>
    #include <a_mysql>


    Для начала давайте удалим ненужные нам строки:
    #if defined FILTERSCRIPT 

    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }

    public OnFilterScriptExit()
    {
    return 1;
    }

    #else


    Далее пропускаем строки:
    main() 
    {
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
    }


    Кстати немного о main().
    Как вы видите функция print при запуске мода покажет нам текст в консоле который мы с вами ввели. Вы можете добавить ещё полей и написать в них что угодно. Так-же функция print служит для поиска багов в моде. Например у вас не работает функция, постепенно вставляйте print в код
    Пример: (при проверке рекомендую использовать printr)

    PHP код:
    public Function(playerid

            
    printr("Проверяем подключен ли игрок"); 
        if(
    IsPlayerConnected(playerid))// Если игрок подключен,то 
        

                    
    printr("Проверку прошли, ставим погоду"); 
            
    SetPlayerWeather(playerid10);// Выводим ему погоду id 10 
                    
    printr("Паблик успешно выполнен"); 
        } 

    Немного истории...
    При написании мода используются различные символы и переменные, разберем их.
    PHP код:
    || - это означает "или"пример PlayerInfo[playerid][pLeader] == || PlayerInfo[playerid][pMember] == Рабочий фракции 1 или лидер фракции 1
    && - 
    это означает "и"пример PlayerInfo[playerid][pMember] == && PlayerInfo[playerid][pRank] == Рабочий фракции 1 и у него 3 ранг 
    ! - 
    это означает "не"пример (!IsPlayerConnected) ( игрок не подключен 
    if - 
    это означает "если"пример  
    if (!IsPlayerConnected

    if 
    PlayerInfo[playerid][pMember] == && PlayerInfo[playerid][pRank] == 3и так далее 
    else - это означает "иначе" также бывает выражение "else if" иначе если 
    Но вернемся к моду И так, удаляем строку:
    #endif


    Удалили? Отлично, перейдем к разборке самого мода.

    Давайте для начала пропишем данные к базе MySQL, для этого отступаем одну строку после инклудов и пишем следующее:
    #define mysql_host "localhost" // если запускаем сервер у себя на компьютере, то оставляем 
    #define mysql_db "samp" // имя базы данных mysql
    #define mysql_user "root" // пользователь Mysql
    #define mysql_pass "" // пароль от mysql

    #define send(%0,%1) SendClientMessage(%0, -1, %1)


    Далее давайте отступим ещё одну строчку и вставим следующую строку:
    new connectionHandle;


    Также отступаем одну строку и вставляем:
    enum pInfo  
    {
    Key[128],//переменная пароля
    Level, //уровень игрока
    };
    new PlayerInfo[MAX_PLAYERS][pInfo];


    Далее идем чуть ниже,в public OnGameModeInit() и вставляем туда следующее:
        connectionHandle = mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);  
    if(mysql_ping() != 1) print("MySQL соединение, false.");


    В итоге у нас получится такой паблик (public):
    public OnGameModeInit() 
    {
    connectionHandle = mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);
    if(mysql_ping() != 1) print("MySQL соединение, false.");
    SetGameModeText("My Mode");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
    }


    Далее таким же образом вставляем следующее в public OnGameModeExit():
    mysql_close(connectionHandle);


    В public OnPlayerConnect(playerid):
        new str[128];  
    mysql_real_escape_string(Name(playerid), Name(playerid));
    format(str, sizeof(str),"SELECT `Name` FROM `Accounts` WHERE `Name` = '%s'", Name(playerid));
    mysql_function_query(connectionHandle, str, true, "OnPlayerRegCheck","d", playerid);


    В public OnPlayerSpawn(playerid):
    if(!GetPVarInt(playerid, "Logged")) return send(playerid, "Прежде чем заспавниться, нужно быть авторизированым.");


    В public OnPlayerText(playerid, text[]):
    if(!GetPVarInt(playerid, "Logged")) return send(playerid, "Что бы писать в чат, нужно быть авторизированым.");


    В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]):
    switch(dialogid)  
    {
    case 1://Регистрация
    {
    if(!strlen(inputtext))return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Регистрация","Добро пожаловать на сервер!\nВаш аккаунт не зарегистрирован!\n\nВведите пароль:","Далее","Отмена");
    OnPlayerRegister(playerid,inputtext);
    return 1;
    }
    case 2://Авторизация
    {
    if(!strlen(inputtext))return ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Авторизация","Здравствуйте!\n\nВы зарегистрированы!\nВведите пароль:","Вход","Отмена");
    OnPlayerLogin(playerid,inputtext);
    return 1;
    }
    }


    В самый конец кода:
    stock Name(i) { new pl[24]; GetPlayerName(i, pl, 24); return pl; }  

    forward OnPlayerRegCheck(playerid);
    public OnPlayerRegCheck(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    new rows, fields;
    cache_get_data(rows, fields);
    if(rows)
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_PASSWORD,"Авторизация","Здравствуйте!\n\nВы зарегистрированы!\nВведите пароль:","Вход","Отмена");
    else
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Регистрация","Добро пожаловать на сервер!\nВаш аккаунт не зарегистрирован!\n\nВведите пароль:","Далее","Отмена");
    }
    return 1;
    }

    stock OnPlayerRegister(p, password[])
    {
    new str[128];
    format(str, sizeof(str), "INSERT INTO `Accounts` (`Name`, `Key`) VALUES ('%s', '%s')", Name(p), password);
    mysql_function_query(connectionHandle, str, false, "RegisterCallback","d", p);
    return 1;
    }

    forward RegisterCallback(playerid);
    public RegisterCallback(playerid)
    {
    send(playerid,"Регистрация прошла успешно!");
    SetPVarInt(playerid,"Logged", 1), SpawnPlayer(playerid);
    return 1;
    }

    stock SavePlayer(p)
    {
    if(GetPVarInt(p,"Logged") > 0)
    {
    new str[128];
    format(str,sizeof(str),"UPDATE `Accounts` SET `Key`, `Level` = '%d'",
    PlayerInfo[p][Key], PlayerInfo[p][Level]);
    format(str, sizeof(str),"%s WHERE `Name` = '%s'", str, Name(p));
    mysql_query(str, -1, 0, connectionHandle);
    }
    return 1;
    }

    stock OnPlayerLogin(i, password[])
    {
    new str[128];
    format(str, sizeof(str),"SELECT * FROM `Accounts` WHERE `Name` = '%s' AND `Key` = '%s'", Name(i), password);
    mysql_function_query(connectionHandle, str, true, "LoginCallback","ds", i, password);
    return 1;
    }

    forward LoginCallback(i, password[]);
    public LoginCallback(i, password[])
    {
    new rows, fields, string[144], maximum[128];
    cache_get_data(rows, fields);
    if(!rows)
    {
    if(GetPVarInt(i, "wrongPass") == 2) return send(i,"Вы ввели 3 раза неверный пароль, поэтому были кикнуты сервером."), Kick(i);
    SetPVarInt(i, "wrongPass", GetPVarInt(i, "wrongPass")+1);
    format(string, sizeof(string), "Неверный пароль(осталось %i/3)\nВведите пароль:", 3 - GetPVarInt(i, "wrongPass"));
    ShowPlayerDialog(i, 2, DIALOG_STYLE_PASSWORD, "Авторизация", string, "Вход", "Отмена");
    return 1;
    }
    cache_get_field_content(0, "Level", maximum), PlayerInfo[i][Level] = strval(maximum);

    SetPVarInt(i, "Logged", 1);
    send(i, "Вы успешно авторизовались!");
    SpawnPlayer(i), SavePlayer(i);
    return 1;
    }


    Этим этапом мы с вами сделали регистарцию, и авторизацию на сервере. Спасибо Jeff_Hardy за данные коды по регистрации и авторизации.
    Но это ещё не все, давайте запустим наш любимый Denwer, далее в адресной строке наберем следующую ссылку: http://localhost/Tools/phpMyAdmin/
    Создадим нашу Базу Данных samp и зайдем в неё, зайдя в неё мы с вами увидим сверху вкладочку "SQL" или "Структура", жмем на неё.
    В появившемся поле мы вставим следующий код:

    CREATE TABLE IF NOT EXISTS `Accounts` (  
    `Name` varchar(24) COLLATE cp1251_bin NOT NULL,
    `Key` varchar(30) CHARACTER SET utf8 NOT NULL,
    `Level` int(3) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin;


    Все готово! Теперь мы можем скомпилировать мод (F5) и запустить его.
    Зайдя на сервер мы с вами видим что появилось окно регистарции и авторизации. Но а что насчет административной панели, респавна и прочие функции? А это вы увидите в следующем уроке! Желаю удачи!
    Исходники: Мод
    Автор: *Оса*
    В следующем уроке мы напишем систему административной панели, дома, респаун и первую Role Play функцию.

    Глава II ( 2 ). #define


    На протяжении всего мода будут использоваться константы цветов и прочего. Вот некоторые цвета. (Цвета состоят по типу 0xFF0000AA - Где важные цифры только FF0000, остальные цвета вы можете посмотреть на http://yandex.ru/yandsearch?text=%D1...=1955454&lr=33 )
    Вставляем чуть ниже include:

    #define COLOR_BOX 0x00000050
    #define COLOR_GRAD1 0xB4B5B7FF
    #define COLOR_GRAD2 0xBFC0C2FF
    #define COLOR_GRAD3 0xCBCCCEFF
    #define COLOR_GRAD4 0xD8D8D8FF
    #define COLOR_GRAD5 0xE3E3E3FF
    #define COLOR_GRAD6 0xF0F0F0FF
    #define COLOR_USE 0x7FB151FF
    #define COLOR_BLUE 0x33AAFFFF
    #define COLOR_SALMON 0xFA8072AA
    #define COLOR_INDIGO 0x4B00B0AA
    #define COLOR_BLACK 0x000000AA
    #define COLOR_GREY 0xAFAFAFAA
    #define COLOR_GREEN 0x33AA33AA
    #define COLOR_RED 0xAA3333AA
    #define COLOR_LIGHTRED 0xFF6347AA
    #define COLOR_LIGHTBLUE 0x33CCFFAA
    #define COLOR_LIGHTGREEN 0x9ACD32AA
    #define COLOR_YELLOW 0xFFFF00AA
    #define COLOR_YELLOW2 0xF5DEB3AA
    #define COLOR_WHITE 0xFFFFFFAA
    #define COLOR_REDD 0xFF0000AA
    #define COLOR_FADE1 0xE6E6E6E6
    #define COLOR_FADE2 0xC8C8C8C8
    #define COLOR_FADE3 0xAAAAAAAA
    #define COLOR_FADE4 0x8C8C8C8C
    #define COLOR_FADE5 0x6E6E6E6E
    #define COLOR_PURPLE 0xC2A2DAAA
    #define COLOR_ALLDEPT 0xFF8282AA
    #define COLOR_NEWS 0xFFA500AA
    #define COLOR_OOC 0xE0FFFFAA
    #define TEAM_HIT_COLOR 0xFFFFFF00
    #define TEAM_BLUE_COLOR 0x8D8DFF00
    #define TEAM_GROVE_COLOR 0x00D900C8
    #define TEAM_AZTECAS_COLOR 0x01FCFFC8
    #define TEAM_CYAN_COLOR 0xFF8282AA


    P.S. Тему создал не ради плюсов, а потому что действительно понравился урок. Описано все, что нужно. Сам начал по нему писать мод.

  2. #2
    Проверенный Аватар для frog163
    Регистрация
    12.04.2010
    Адрес
    Samara
    Возраст
    31
    Сообщений
    4,548
    Репутация: 365

    Звание: - очень-очень хороший человек

    Re: Пишем мод с нуля (MySQL R7, 0.3x)

    JAWS
    MySQL R7, 0.3x
    R8 мб?
    при проверке рекомендую использовать printr
    Что это?
    new connectionHandle;
    Ну и нах#я ты ее юзаешь, если не используешь в половине функций? Если случится реконект - половина мода не будет работать (на случай если тебе интересны последствия)
    Обращаться к базе, чтоб чекнуть пароль - не есть збс

    И ко всему прочему в теме куча не нужного хлама про плагины, настройку сервера, дебаг.. ЗАЧЕМ??
    Ничто не ограничивает полет мысли программиста так, как компилятор, сцуко!
    Если в предложении собеседника различного рода смайлов больше чем слов - однозначно, что этот индивид страдает критической, неизлечимой и при этом прогрессирующей формой долбоебизма © лурка
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

  3. #3
    Проверенный Аватар для ViperXXX
    Регистрация
    27.05.2010
    Адрес
    Россия, Иваново
    Возраст
    27
    Сообщений
    567
    Репутация: 26

    Звание: на пути к лучшему

    Re: Пишем мод с нуля (MySQL R7, 0.3x)

    Цитата Сообщение от frog163 Посмотреть сообщение
    JAWS

    R8 мб?

    Что это?

    Ну и нах#я ты ее юзаешь, если не используешь в половине функций? Если случится реконект - половина мода не будет работать (на случай если тебе интересны последствия)
    Обращаться к базе, чтоб чекнуть пароль - не есть збс

    И ко всему прочему в теме куча не нужного хлама про плагины, настройку сервера, дебаг.. ЗАЧЕМ??
    frog163, я лишь скопировал урок. Делал по нему, все прекрасно работает. Поэтому эта тема здесь.

  4. #4
    Read-only Аватар для MacMailler
    Регистрация
    03.04.2012
    Адрес
    East Kazakhstan
    Возраст
    30
    Сообщений
    1,047
    Репутация: 211

    Звание: - весьма и весьма положительная личность

    Re: Пишем мод с нуля (MySQL R7, 0.3x)

    Прочитал урок и понял как написать мод с нуля на мускул р7. Не знаю чтобы я делал без этого великолепного урока. Никогда бы наверно не понял как написать мод с нуля на мускул р7. Спасибо.

  5. #5
    Проверенный Аватар для frog163
    Регистрация
    12.04.2010
    Адрес
    Samara
    Возраст
    31
    Сообщений
    4,548
    Репутация: 365

    Звание: - очень-очень хороший человек

    Re: Пишем мод с нуля (MySQL R7, 0.3x)

    Цитата Сообщение от ViperXXX Посмотреть сообщение
    frog163, я лишь скопировал урок. Делал по нему, все прекрасно работает. Поэтому эта тема здесь.
    Я и писал не тебе..
    Ничто не ограничивает полет мысли программиста так, как компилятор, сцуко!
    Если в предложении собеседника различного рода смайлов больше чем слов - однозначно, что этот индивид страдает критической, неизлечимой и при этом прогрессирующей формой долбоебизма © лурка
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

  6. #6
    Проверенный Аватар для e.kosovskij
    Регистрация
    09.07.2010
    Адрес
    Украина, Харьков
    Сообщений
    3,180
    Репутация: 308

    Звание: как роза среди колючек

    Re: Пишем мод с нуля (MySQL R7, 0.3x)

    Сохранение только при авторизации? Хм..

  7. #7
    Проверенный Аватар для ViperXXX
    Регистрация
    27.05.2010
    Адрес
    Россия, Иваново
    Возраст
    27
    Сообщений
    567
    Репутация: 26

    Звание: на пути к лучшему

    Re: Пишем мод с нуля (MySQL R7, 0.3x)

    Прошу администратора добавить в название темы префикс "Урок №1"

  8. #8
    Проверенный Аватар для frog163
    Регистрация
    12.04.2010
    Адрес
    Samara
    Возраст
    31
    Сообщений
    4,548
    Репутация: 365

    Звание: - очень-очень хороший человек

    Re: Пишем мод с нуля (MySQL R7, 0.3x)

    Цитата Сообщение от ViperXXX Посмотреть сообщение
    Прошу администратора добавить в название темы префикс "Урок №1"
    Радуйся, что не удалили.. хотя.. что там с сохранением?
    Ничто не ограничивает полет мысли программиста так, как компилятор, сцуко!
    Если в предложении собеседника различного рода смайлов больше чем слов - однозначно, что этот индивид страдает критической, неизлечимой и при этом прогрессирующей формой долбоебизма © лурка
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

  9. #9
    Проверенный Аватар для ViperXXX
    Регистрация
    27.05.2010
    Адрес
    Россия, Иваново
    Возраст
    27
    Сообщений
    567
    Репутация: 26

    Звание: на пути к лучшему

    Re: Пишем мод с нуля (MySQL R7, 0.3x)

    Цитата Сообщение от frog163 Посмотреть сообщение
    Радуйся, что не удалили.. хотя.. что там с сохранением?
    Это только первый урок, думаю, автор сделает и сохранение аккаунтов при отключении игрока от сервера.

  10. #10
    Пользователь
    Регистрация
    05.10.2011
    Возраст
    31
    Сообщений
    84
    Репутация: 6

    Звание: пока не определено

    Re: Пишем мод с нуля (MySQL R7, 0.3x)

    PHP код:
    stock SavePlayer(p

        if(
    GetPVarInt(p,"Logged") > 0
        { 
            new 
    str[128]; 
            
    format(str,sizeof(str),"UPDATE `Accounts` SET `Key`, `Level` = '%d'"
            
    PlayerInfo[p][Key], PlayerInfo[p][Level]); 
            
    format(strsizeof(str),"%s WHERE `Name` = '%s'"strName(p)); 
            
    mysql_query(str, -10connectionHandle); //  <-- в R7 нет этой функции, исправь это на mysql_function_query(connectionHandle, str, false, "", "");
        

         return 
    1


Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. [Продам] Мод SampStar написанный с нуля на MySQL
    от r3ctoforc в разделе Магазин
    Ответов: 17
    Последнее сообщение: 27.03.2015, 01:17
  2. Как создать RP/DM мод на базе MySql с нуля
    от Dictable в разделе Другие темы по Pawn
    Ответов: 2
    Последнее сообщение: 05.08.2014, 21:48
  3. [Урок] Пишем мод с Vovan228 [ Урок 1 ]
    от Vovanm93 в разделе Pawn WIKI
    Ответов: 197
    Последнее сообщение: 05.08.2013, 07:15
  4. пишем регистрацию с 0 на y_ini
    от RastaOrecha в разделе Скрипты для любого мода
    Ответов: 34
    Последнее сообщение: 03.01.2013, 10:02

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •