Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Невидимость объекта

Статус пользователя mOdest
сообщение 9.2.2019, 23:55
Сообщение #1


Стаж: 9 лет 9 месяцев

Сообщений: 1255
Благодарностей: 255
Полезность: 79

Доброго времени суток. Пожалуйста, подскажите как сделать чтобы купленные шапки были невидимыми вместе с игроком, когда тот становится невидим.

Cкрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <engine>

#define PLUGIN "Hats shop"
#define VERSION "1.1"
#define AUTHOR "R-2"

native get_class_destroyer(id)

#define ypon 1.4 //На сколько умножать урон от атак. Если нанёс 50 то 50*1.4=70 урона

#define HATS1         800     //цена шапки Скорость
#define HATS2         800     //цена шапки Гравитация
#define HATS3         1600     //цена шапки скорость + грава
#define HATS4         3000     //цена шапки Дамаг
#define HATS5         5000     //VIP шапка Невидимость 50%
#define HATS6         7000 //Супер VIP шапка, все умелки

#define FLAG_VIP ADMIN_LEVEL_H //флаг доступа на покупку шапки 5 (вип)
#define FLAG_SVIP ADMIN_KICK //флаг доступа на покупку шапки 6 (Супер вип)

new Ent[33]
new OffSkill[33]
new g_speed[33]
new g_grava[33]
new g_damag[33]
new g_invis[33]

new const chebur[] = "models/ShopR2/cheburashka.mdl"
new const cow[] = "models/ShopR2/cow.mdl"
new const demon[] = "models/ShopR2/demon.mdl"
new const elf[] = "models/ShopR2/elf.mdl"
new const gena[] = "models/ShopR2/gena.mdl"
new const kotan[] = "models/ShopR2/kotan.mdl"

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    RegisterHam(Ham_Item_PreFrame, "player", "PreFrame_Post", 1)
    RegisterHam(Ham_TakeDamage, "player", "Player_TakeDamage")
    RegisterHam(Ham_Killed, "player", "fw_Killed")
    register_clcmd("say /hats","hats_menu")
}
public plugin_precache()
{
    precache_model(chebur)
    precache_model(cow)
    precache_model(demon)
    precache_model(elf)
    precache_model(gena)
    precache_model(kotan)
}
public client_disconnected(id){
    remove_hat(id)
    g_speed[id] = false
    g_invis[id] = false
    g_damag[id] = false
    g_grava[id] = false
}

public client_connect(id){
    g_speed[id] = false
    g_invis[id] = false
    g_damag[id] = false
    g_grava[id] = false
}
public fw_Killed(victim, attacker, corpse)
{
    remove_hat(victim)
    g_speed[victim] = false
    g_invis[victim] = false
    g_damag[victim] = false
    g_grava[victim] = false
}
public hats_menu(id)
{
    if(get_user_team(id) == 3) return PLUGIN_HANDLED    
    if(!is_user_alive(id)) return PLUGIN_HANDLED
    if(Ent[id] > 0)
    {
        ChatColor(id, "!g[Магазин возможностей]!y В данный момент покупка запрещена!")
        return PLUGIN_HANDLED
    }

    if(get_class_destroyer(id))
    {
        ChatColor(id, "!g[Магазин возможностей]!y В режиме охотника покупка запрещена!")
        return PLUGIN_HANDLED
    }

    new szText[ 555 char ];
    new money = cs_get_user_money(id)
    formatex( szText, charsmax( szText ), "\yМагазин шапочек:^nВаш счёт: %d", money)
    new i_Menuh = menu_create(szText, "menu_hats")
    
    
    if(money >= HATS1 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\yГена \d[\rСкорость\w+\d] \w| \y%d\r$", HATS1)  
    else if(money <= HATS1 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dГена | \y%d\r$", HATS1)
    else if(!is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dГена \w[\rВы мертвы\w]")
    menu_additem(i_Menuh, szText, "1", 0)
    
    if(money >= HATS2 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\yЧебурашка \d[\rГравитация\w+\d] \w| \y%d\r$", HATS2)
    else if(money <= HATS2 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dЧебурашка | \y%d\r$", HATS2)
    else if(!is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dЧебурашка \w[\rВы мертвы!\w]")
    menu_additem(i_Menuh, szText, "2", 0)
  
    if(money >= HATS3 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\yКорова \d[\rСкор\w+ \rГрав\w+\d] \w| \y%d\r$", HATS3)    
    else if(money <= HATS3 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dКорова | \y%d\r$", HATS3)
    else if(!is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dКорова \w[\rВы мертвы!\w]")
    menu_additem(i_Menuh, szText, "3", 0)
    
    if(money >= HATS4 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\yДемон \d[\rУрон\w+\d] \w| \y%d\r$", HATS4)
    else if(money <= HATS4 && is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dДемон | \y%d\r$", HATS4)
    else if(!is_user_alive(id))
    formatex( szText, charsmax( szText ), "\dДемон \w[\rВы мертвы!\w]")
    menu_additem(i_Menuh, szText, "4", 0)

    if(get_user_flags(id) & FLAG_VIP || get_user_flags(id) & FLAG_SVIP)
    menu_addtext(i_Menuh,"^n\rVIP\w: ",0)
    else
    menu_addtext(i_Menuh,"^n\yVIP: \d[\rНет доступа\d]\w: ",0)
    
    if(money >= HATS5 && is_user_alive(id) && get_user_flags(id) & FLAG_VIP)
    formatex( szText, charsmax( szText ), "\yЭльф \d[\rНевидимость\d] \w| \y%d\r$", HATS5)
    else if(!is_user_alive(id) && get_user_flags(id) & FLAG_VIP)
    formatex( szText, charsmax( szText ), "\dЭльф \w[\rВы мертвы!\w]")
    else if(money <= HATS5 && get_user_flags(id) & FLAG_VIP)
    formatex( szText, charsmax( szText ), "\dЭльф \w| \y%d\r$", HATS5)
    else if(!(get_user_flags(id) & FLAG_VIP))
    formatex( szText, charsmax( szText ), "\dЭльф \w[\rНет доступа\w]")
    menu_additem(i_Menuh, szText, "5", 0)
    
    if(get_user_flags(id) & FLAG_VIP || get_user_flags(id) & FLAG_SVIP)
    menu_addtext(i_Menuh,"^n\rАдмин\w: ",0)
    else
    menu_addtext(i_Menuh,"^n\yrАдмин\d[\rНет доступа\d]\w: ",0)

    if(money >= HATS5 && is_user_alive(id) && get_user_flags(id) & FLAG_SVIP)
    formatex( szText, charsmax( szText ), "\yКотан \d[\rВесь комплект\d] \w| \y%d\r$", HATS6)  
    else if(!is_user_alive(id) && get_user_flags(id) & FLAG_SVIP)
    formatex( szText, charsmax( szText ), "\dКотан \w[\rВы мертвы!\w]")
    else if(money <= HATS6 && get_user_flags(id) & FLAG_SVIP)
    formatex( szText, charsmax( szText ), "\dКотан \w| \y%d\r$", HATS6)
    else if(!(get_user_flags(id) & FLAG_SVIP))
    formatex( szText, charsmax( szText ), "\dКотан \w[\rНет доступа\w]")
    menu_additem(i_Menuh, szText, "6", 0)
    
    menu_setprop(i_Menuh, MPROP_EXITNAME, "Выход")
    menu_setprop(i_Menuh, MPROP_EXIT, MEXIT_ALL)

    menu_display(id, i_Menuh, 0)
    
    return PLUGIN_HANDLED
}

public menu_hats(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_destroy(menu)
        
        return PLUGIN_HANDLED
    }

    new s_Data[6], s_Name[64], i_Access, i_Callback

    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)

    new i_Key = str_to_num(s_Data)
    new money = cs_get_user_money(id)
    
    switch(i_Key)
    {
        case 2:
        {  
            if(get_class_destroyer(id)) return PLUGIN_HANDLED
            if(get_user_team(id) == 3 || !is_user_alive(id))
            {
                ChatColor(id, "!g[Магазин возможностей]!y В данный момент покупка запрещена!")
                return PLUGIN_HANDLED
            }

            if(money < HATS2)
            {
               ChatColor(id, "!g[Магазин возможностей]!y У вас не хватает денег!")
               return PLUGIN_HANDLED
            }
            
            if(Ent[id] < 1) remove_hat(id)
            Ent[id] = create_entity("info_target")
            if(is_valid_ent(id))
            {
                OffSkill[id] = 2
                entity_set_model(Ent[id] , chebur)
                entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                entity_set_edict(Ent[id], EV_ENT_aiment, id)
                set_user_gravity(id, 0.5)
                g_grava[id] = true
                cs_set_user_money(id, money - HATS2)
                ChatColor(id, "!g[Магазин возможностей]!y Вы получили !tслабую гравитацию")
            }
        }
        case 1:
        {
            if(get_class_destroyer(id)) return PLUGIN_HANDLED
            if(get_user_team(id) == 3 || !is_user_alive(id))
            {
                ChatColor(id, "!g[Магазин возможностей]!y В данный момент покупка запрещена!")
                return PLUGIN_HANDLED
            }

            if(money < HATS1)
            {
               ChatColor(id, "!g[Магазин возможностей]!y У вас не хватает денег!")
               return PLUGIN_HANDLED
            }
        
            if(Ent[id] < 1) remove_hat(id)
            Ent[id] = create_entity("info_target")
            if(is_valid_ent(id))
            {
                OffSkill[id] = 2
                entity_set_model(Ent[id] , gena)
                entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                entity_set_edict(Ent[id], EV_ENT_aiment, id)
                g_speed[id] = true
                set_user_maxspeed(id, 360.0)
                cs_set_user_money(id, money - HATS1)
                ChatColor(id, "!g[Магазин возможностей]!y Вы получили !tбыстрый бег")
            }
        }
        case 3:
        {
            if(get_class_destroyer(id)) return PLUGIN_HANDLED
            if(get_user_team(id) == 3 || !is_user_alive(id))
            {
                ChatColor(id, "!g[Магазин возможностей]!y В данный момент покупка запрещена!")
                return PLUGIN_HANDLED
            }

            if(money < HATS3)
            {
               ChatColor(id, "!g[Магазин возможностей]!y У вас не хватает денег!")
               return PLUGIN_HANDLED
            }
        
            if(Ent[id] < 1) remove_hat(id)
            Ent[id] = create_entity("info_target")
            if(is_valid_ent(id))
            {
                OffSkill[id] = 2
                entity_set_model(Ent[id] , cow)
                entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                entity_set_edict(Ent[id], EV_ENT_aiment, id)
                set_user_gravity(id, 0.5)
                g_speed[id] = true
                g_grava[id] = true
                set_user_maxspeed(id, 360.0)    
                cs_set_user_money(id, money - HATS3)
                ChatColor(id, "!g[Магазин возможностей]!y Вы получили !tслабую гравитацию и быстрый бег")
            }
        }
        case 4:
        {
            if(get_class_destroyer(id)) return PLUGIN_HANDLED
            if(get_user_team(id) == 3 || !is_user_alive(id))
            {
                ChatColor(id, "!g[Магазин возможностей]!y В данный момент покупка запрещена!")
                return PLUGIN_HANDLED
            }

            if(money < HATS4)
            {
               ChatColor(id, "!g[Магазин возможностей]!y У вас не хватает денег!")
               return PLUGIN_HANDLED
            }
            

            if(Ent[id] < 1) remove_hat(id)
            Ent[id] = create_entity("info_target")
            if(is_valid_ent(id))
            {
                OffSkill[id] = 2
                entity_set_model(Ent[id] , demon)
                entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                entity_set_edict(Ent[id], EV_ENT_aiment, id)
                g_damag[id] = true            
                cs_set_user_money(id, money - HATS4)
                ChatColor(id, "!g[Магазин возможностей]!y Вы получили !tдвойной урон")
            }
        }
        case 5:
        {
            if(get_class_destroyer(id)) return PLUGIN_HANDLED
            if(!(get_user_flags(id) & FLAG_VIP))
            {
               ChatColor(id, "!g[Магазин возможностей]!y У вас нет доступа на покупку данной шапки!")
               return PLUGIN_HANDLED
        
            }
        
            if(get_user_team(id) == 3 || !is_user_alive(id))
            {
                ChatColor(id, "!g[Магазин возможностей]!y В данный момент покупка запрещена!")
                return PLUGIN_HANDLED
            }

            if(money < HATS5)
            {
               ChatColor(id, "!g[Магазин возможностей]!y У вас не хватает денег!")
               return PLUGIN_HANDLED
            }
            
            if(Ent[id] < 1) remove_hat(id)
            Ent[id] = create_entity("info_target")
            if(is_valid_ent(id))
            {
                OffSkill[id] = 4
                entity_set_model(Ent[id] , elf)
                entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                entity_set_edict(Ent[id], EV_ENT_aiment, id)
                set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 50)    
                g_invis[id] = true
                cs_set_user_money(id, money - HATS5)    
                ChatColor(id, "!g[Магазин возможностей]!y Вы получили !tневидимость (50%)")
            }
        }
        case 6:
        {
            if(get_class_destroyer(id)) return PLUGIN_HANDLED
            if(!(get_user_flags(id) & FLAG_SVIP))
            {
               ChatColor(id, "!g[Магазин возможностей]!y У вас нет доступа на покупку данной шапки!")
               return PLUGIN_HANDLED
        
            }
        
            if(get_user_team(id) == 3 || !is_user_alive(id))
            {
                ChatColor(id, "!g[Магазин возможностей]!y В данный момент покупка запрещена!")
                return PLUGIN_HANDLED
            }
        
            if(money < HATS6)
            {
               ChatColor(id, "!g[Магазин возможностей]!y У вас не хватает денег!")
               return PLUGIN_HANDLED
            }
            
            if(Ent[id] < 1) remove_hat(id)
            Ent[id] = create_entity("info_target")
            if(is_valid_ent(id))
            {
                OffSkill[id] = 4
                
                entity_set_model(Ent[id] , kotan)
                entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
                entity_set_edict(Ent[id], EV_ENT_aiment, id)
                
                set_user_maxspeed(id, 360.0)
                set_user_gravity(id, 0.5)
                set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 50)
                g_speed[id] = true
                g_grava[id] = true
                g_invis[id] = true
                g_damag[id] = true
                cs_set_user_money(id, money - HATS6)
                ChatColor(id, "!g[Магазин возможностей]!y Вы получили !tполноценный комплект")
        
            }    
        }
    }
  
    menu_destroy(menu)
    return PLUGIN_HANDLED
}

public remove_hat(id)
{
    if(Ent[id] > 0)
    {
        remove_entity(Ent[id])
        Ent[id] = 0
    }
}

public PreFrame_Post(id)
{
    if(!is_user_connected(id) || !is_user_alive(id)) return
    
    if((get_class_destroyer(id)) && Ent[id]) set_entity_visibility(Ent[id], 1)
        
    if(!get_class_destroyer(id))
    {
        if(g_speed[id]) set_user_maxspeed(id, 360.0)
        if(g_grava[id]) set_user_gravity(id, 0.5)
        if(g_invis[id]) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 50)
    }
}

public Player_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
    if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker) return HAM_IGNORED
    if(!g_damag[attacker]) return HAM_IGNORED
    SetHamParamFloat(4, damage * ypon)
    return HAM_IGNORED
}

stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32]
    static msg[192]
    vformat(msg, 191, input, 3)
  
    replace_all(msg, 191, "!g", "^4") // Green Color
    replace_all(msg, 191, "!y", "^1") // Default Color
    replace_all(msg, 191, "!t", "^3") // Team Color
  
    if (id) players[0] = id; else get_players(players, count, "ch")
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                write_byte(players[i])
                write_string(msg)
                message_end()
            }
        }
    }
}


Выдача невидимости
Код
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 25)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Izmayl7
сообщение 10.2.2019, 0:00
Сообщение #2
Стаж: 10 лет

Сообщений: 831
Благодарностей: 312
Полезность: 578

mOdest, тут невидимость только в шапке эльфа и кота - 50% невидимости. или тебе надо чтобы во всех остальных шапках (гены, чебурашки, коровы) была тоже невидимость?! и шапка вместе с моделью(силуэт модели шапки) игрока, была тоже невидима?!

Отредактировал: Izmayl7, - 10.2.2019, 0:02
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mOdest
сообщение 10.2.2019, 2:49
Сообщение #3


Стаж: 9 лет 9 месяцев

Сообщений: 1255
Благодарностей: 255
Полезность: 79

Цитата(Izmayl7 @ 10.2.2019, 1:00) *
mOdest, тут невидимость только в шапке эльфа и кота - 50% невидимости. или тебе надо чтобы во всех остальных шапках (гены, чебурашки, коровы) была тоже невидимость?! и шапка вместе с моделью(силуэт модели шапки) игрока, была тоже невидима?!

да
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 10.2.2019, 4:23
Сообщение #4
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

mOdest,

в гугле находится

fm_set_rendering(Ent[id] ,kRenderFxGlowShell,0,0,0,kRenderTransAlpha, 0-255 ТУТ )
set_entity_visibility(Ent[id], 0) // 1 visible

вставь set_entity_visibility(Ent[id], 0) туда, где игрок невидим ( событие )


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mOdest
сообщение 10.2.2019, 10:38
Сообщение #5


Стаж: 9 лет 9 месяцев

Сообщений: 1255
Благодарностей: 255
Полезность: 79

csnet, мне кажется, объект будет полностью невидим, нет?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mOdest
сообщение 10.2.2019, 11:07
Сообщение #6


Стаж: 9 лет 9 месяцев

Сообщений: 1255
Благодарностей: 255
Полезность: 79

кстати, ещё вопрос. как сделать включение невидимости объекта, когда игроку присваивается невидимость в другом плагине. нативом массив я передам, но вот как передать функцию? чтоб она включилась, объект стал невидим и всё. думаю сделать через Ham_Item_PreFrame, но сначала решил у вас спросить

(это я решил)

Отредактировал: mOdest, - 10.2.2019, 11:19
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 10.2.2019, 12:12
Сообщение #7
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата(mOdest @ 10.2.2019, 13:07) *
кстати, ещё вопрос. как сделать включение невидимости объекта, когда игроку присваивается невидимость в другом плагине. нативом массив я передам, но вот как передать функцию? чтоб она включилась, объект стал невидим и всё. думаю сделать через Ham_Item_PreFrame, но сначала решил у вас спросить

(это я решил)


Сделайте цикл по энтити с учетом класснейма необходимого объекта и найдите нужный ID, проверьте его валидность и поменяйте у него pev_effects (EF_NODRAW). Это скроет объект. Соответственно нулевое значение вернет ему видимость.

Информацию между плагинами можно передавать через нативы (это самое убогое решение, т.к. делает плагины зависимыми). Ещё есть форварды, оффсеты и через серверные команды "server_cmd".
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mOdest
сообщение 10.2.2019, 12:20
Сообщение #8


Стаж: 9 лет 9 месяцев

Сообщений: 1255
Благодарностей: 255
Полезность: 79

SISA, а можно кодом, пожалуйста?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя $@NyA
сообщение 11.2.2019, 11:55
Сообщение #9


Иконка группы

Стаж: 18 лет

Сообщений: 987
Благодарностей: 529
Полезность: 1050

А мне от интересно другое,если будет установлен плагин прохода сквозь игроков и при приближении к игроку он будет полупрозрачный в месте с шапкой или нет?

Отредактировал: $@NyA, - 11.2.2019, 13:42


МультиМод CS
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mOdest
сообщение 11.2.2019, 19:44
Сообщение #10


Стаж: 9 лет 9 месяцев

Сообщений: 1255
Благодарностей: 255
Полезность: 79

Цитата($@NyA @ 11.2.2019, 12:55) *
А мне от интересно другое,если будет установлен плагин прохода сквозь игроков и при приближении к игроку он будет полупрозрачный в месте с шапкой или нет?

использую мета-модуль semiclip (вроде так), при приближении устанавливается прозрачность с модуля, а при отдалении уже серверная
то есть, он никак не мешает
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 2 гостей читают эту тему: