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

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

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

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

Nade Health с доступом

Damir228
сообщение 9.12.2015, 19:08
Сообщение #1
Стаж: 10 лет

Сообщений: 24
Благодарностей: 3
Полезность: 0

как сделать доступ толка для флага P

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

#define PLUGIN_NAME "Nade Health"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "Dorus"

#define V_MODEL "models/v_he_mk_nade.mdl"
#define P_MODEL "models/p_he_mk_nade.mdl"
#define W_MODEL "models/w_he_mk_nade.mdl"

#define GIVE_HP 30

#define SMOKE_SCALE 30
#define SMOKE_FRAMERATE 12

new ExplSpr, ExplSpr2, ExplSpr3, ExplYO, g_iSpriteCircle

// do not edit
new const g_sound_explosion[] = "weapons/sg_explode.wav"
new const g_classname_grenade[] = "grenade"
new g_eventid_createsmoke

public plugin_init() {
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

register_forward(FM_EmitSound, "forward_emitsound")
register_forward(FM_PlaybackEvent, "forward_playbackevent")
register_event( "CurWeapon", "CurWeapon", "be", "1=1" )
register_forward( FM_SetModel, "forward_model", 1 )

// we do not precaching, but retrieving the indexes
g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1, "events/createsmoke.sc")
}

public plugin_precache()
{
ExplSpr = precache_model("sprites/gp_1.spr");
ExplSpr2 = precache_model("sprites/gp_2.spr");
ExplSpr3 = precache_model("sprites/gp_3.spr");
precache_sound("woomen_expr.wav")
ExplYO = precache_model("sprites/woomensx.spr");

g_iSpriteCircle = precache_model( "sprites/shockwave.spr" );

precache_model(V_MODEL)
precache_model(W_MODEL)
precache_model(P_MODEL)
}

public CurWeapon(id)
{
if(is_user_connected(id) && is_user_alive(id))
{
if(get_user_weapon(id) == CSW_SMOKEGRENADE)
{
set_pev(id, pev_viewmodel2, V_MODEL)
set_pev(id, pev_weaponmodel2, P_MODEL)
}
}
}

public forward_model( entity, const model[] )
{
if( !pev_valid( entity ) ) return FMRES_IGNORED;

if(equal( model, "models/w_smokegrenade.mdl" ))
{
engfunc ( EngFunc_SetModel, entity, W_MODEL );
}
return FMRES_IGNORED;
}

public forward_emitsound(ent, channel, const sound[])
{
if (!equal(sound, g_sound_explosion) || !is_grenade(ent))
return FMRES_IGNORED

static Float:origin[3]
static id
id = pev(ent, pev_owner)
pev(ent, pev_origin, origin)
engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, "woomen_expr.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
//engfunc(EngFunc_RemoveEntity, ent)
//create_smoke(origin)

message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
write_byte(TE_SPRITETRAIL) //Спрайт захвата
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+20)
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+80)
write_short(ExplSpr)
write_byte(20)
write_byte(20)
write_byte(4)
write_byte(20)
write_byte(10)
message_end()

message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
write_byte(TE_SPRITETRAIL) //Спрайт захвата
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+20)
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+80)
write_short(ExplSpr2)
write_byte(20)
write_byte(20)
write_byte(4)
write_byte(20)
write_byte(10)
message_end()

message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
write_byte(TE_SPRITETRAIL) //Спрайт захвата
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+20)
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+80)
write_short(ExplSpr3)
write_byte(20)
write_byte(20)
write_byte(4)
write_byte(20)
write_byte(10)
message_end()

message_begin(MSG_ALL, SVC_TEMPENTITY);
write_byte(TE_SPRITE);
write_coord(floatround(origin[0]));
write_coord(floatround(origin[1]));
write_coord(floatround(origin[2]) + 70);
write_short(ExplYO);
write_byte(5);
write_byte(100);
message_end();//MESSAGE ENDING

create_blast_circle(ent, 10, 255, 40)

new tre
while((tre = find_ent_in_sphere(tre,origin,250.0)) != 0)
{
if(is_user_alive(tre) && get_user_team(tre) == get_user_team(id))
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, tre)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(170)
write_byte(255)
write_byte(0)
write_byte(75)
message_end()

set_user_rendering(tre,kRenderFxGlowShell,0,255,50,kRenderNormal,20)
set_task(1.5, "UnEffect", tre)

set_user_health(tre,100)
}
}

return FMRES_SUPERCEDE
}

public UnEffect(tre)
{
if(is_user_alive(tre))
{
set_user_rendering(tre)
}
}

public forward_playbackevent(flags, invoker, eventindex) {
// we do not need a large amount of smoke
if (eventindex == g_eventid_createsmoke)
return FMRES_SUPERCEDE

return FMRES_IGNORED
}

bool:is_grenade(ent) {
if (!pev_valid(ent))
return false

static classname[sizeof g_classname_grenade + 1]
pev(ent, pev_classname, classname, sizeof g_classname_grenade)
if (equal(classname, g_classname_grenade))
return true

return false
}

stock bool:is_hull_vacant(const Float:origin[3], hull) {
new tr = 0
engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr)
if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
return true

return false
}

stock create_blast_circle(ent, R, G, B)
{
static Float: fOrigin[3], iOrigin[3];

pev(ent, pev_origin, fOrigin);

FVecIVec( fOrigin, iOrigin );

message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
write_byte( TE_BEAMCYLINDER );
write_coord( iOrigin[ 0 ] );
write_coord( iOrigin[ 1 ] );
write_coord( iOrigin[ 2 ]);
write_coord( iOrigin[ 0 ] );
write_coord( iOrigin[ 1 ] );
write_coord( iOrigin[ 2 ] + 250) ; // radius
write_short( g_iSpriteCircle );
write_byte( 0 ); // start framerate
write_byte( 1 ); // framerate
write_byte( 5 ); // life
write_byte( 30 ); // width
write_byte( 1 ); // amplitude

write_byte®;
write_byte(G);
write_byte(B);

write_byte( 255 ); // brightness
write_byte( 5 ); // speed
message_end();
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя GDon
сообщение 9.12.2015, 20:02
Сообщение #2


Стаж: 12 лет

Сообщений: 267
Благодарностей: 60
Полезность: 124

было бы классно если доступ был только для админов


*_*_*_*_*_*_*_*_*_*_ВСЕ_О_КС_*_*_*_*_*_*_*_*_*_*
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ThisIsSparta
сообщение 9.12.2015, 20:14
Сообщение #3
Стаж: 11 лет

Сообщений: 566
Благодарностей: 307
Полезность: 600

Damir228, если скинешь исходник файлом, сделаю
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GDon
сообщение 9.12.2015, 20:31
Сообщение #4


Стаж: 12 лет

Сообщений: 267
Благодарностей: 60
Полезность: 124

Цитата(ThisIsSparta @ 10.12.2015, 1:09) *
Damir228, если скинешь исходник файлом, сделаю


Можно и вариант только для админов?

Отредактировал: GDon, - 9.12.2015, 20:31
Прикрепленные файлы:
Прикрепленный файл  new_health_nade.sma ( 6,1 килобайт ) Кол-во скачиваний: 152


*_*_*_*_*_*_*_*_*_*_ВСЕ_О_КС_*_*_*_*_*_*_*_*_*_*
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sh1bashov
сообщение 9.12.2015, 20:33
Сообщение #5


Стаж: 10 лет

Сообщений: 219
Благодарностей: 106
Полезность: 729

Меценат Меценат

GDon, можно плагин даже не исправлять, просто в restmenu запрещаете дым. А в VIP делаете автовыдачу smokegrenade


Твой сервер - это отображение твоего внутреннего мира и твоих детских желаний. ©
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Damir228
сообщение 10.12.2015, 2:51
Сообщение #6
Стаж: 10 лет

Сообщений: 24
Благодарностей: 3
Полезность: 0

Цитата(sh1bashov @ 9.12.2015, 21:28) *
GDon, можно плагин даже не исправлять, просто в restmenu запрещаете дым. А в VIP делаете автовыдачу smokegrenade

Кажется фигня получится
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя GDon
сообщение 10.12.2015, 7:33
Сообщение #7


Стаж: 12 лет

Сообщений: 267
Благодарностей: 60
Полезность: 124

Цитата(sh1bashov @ 10.12.2015, 1:28) *
GDon, можно плагин даже не исправлять, просто в restmenu запрещаете дым. А в VIP делаете автовыдачу smokegrenade

Просто ВИПов много у меня), Вот и хотел что бы только для админов


*_*_*_*_*_*_*_*_*_*_ВСЕ_О_КС_*_*_*_*_*_*_*_*_*_*
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Takashi Murakami
сообщение 10.12.2015, 7:49
Сообщение #8
Стаж: 14 лет

Сообщений: 797
Благодарностей: 459
Полезность: 514

А в чем смысл плагина? вместо флешки - лечебная граната? для паблика? оО как же на паблике без флешки тогда? ничего не пойму.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GDon
сообщение 10.12.2015, 7:50
Сообщение #9


Стаж: 12 лет

Сообщений: 267
Благодарностей: 60
Полезность: 124

Цитата(Takashi Murakami @ 10.12.2015, 12:44) *
А в чем смысл плагина? вместо флешки - лечебная граната? для паблика? оО как же на паблике без флешки тогда? ничего не пойму.

Не для флешки, а для дымовой грены)


*_*_*_*_*_*_*_*_*_*_ВСЕ_О_КС_*_*_*_*_*_*_*_*_*_*
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Takashi Murakami
сообщение 10.12.2015, 7:52
Сообщение #10
Стаж: 14 лет

Сообщений: 797
Благодарностей: 459
Полезность: 514

Цитата(GDon @ 10.12.2015, 8:46) *
Не для флешки, а для дымовой грены)


То есть заменяет дымовую грену?) а как без дыма на паблике тогда?) не пойму) хд
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Vaqtincha
сообщение 10.12.2015, 8:29
Сообщение #11
Стаж: 11 лет

Сообщений: 981
Благодарностей: 352
Полезность: < 0

еще можно редактировать так чтоб не заменяло а добавило. (но это делать я не буду :D)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Takashi Murakami
сообщение 10.12.2015, 8:33
Сообщение #12
Стаж: 14 лет

Сообщений: 797
Благодарностей: 459
Полезность: 514

Цитата(Vaqtincha @ 10.12.2015, 9:25) *
еще можно редактировать так чтоб не заменяло а добавило. (но это делать я не буду :D)


Почему?:с Я бы поставил если бы добавило) вышел бы очень интересный плагин. А так - дым убирать с паблика совсем уж бред по моему..
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Vaqtincha
сообщение 10.12.2015, 8:59
Сообщение #13
Стаж: 11 лет

Сообщений: 981
Благодарностей: 352
Полезность: < 0

дым для меня тактически важное оружие и его убрат нельзя.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 10.12.2015, 9:35
Сообщение #14


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Vaqtincha, как без замены? Что то заменять се равно нужно будет же?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Vaqtincha
сообщение 10.12.2015, 9:52
Сообщение #15
Стаж: 11 лет

Сообщений: 981
Благодарностей: 352
Полезность: < 0

Bloo, работает точно так же как ГолденАк только еще надо пробовать добавить на другой слот.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 10.12.2015, 9:56
Сообщение #16


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Vaqtincha, я если честно не видел как что в golden-ak.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Takashi Murakami
сообщение 16.12.2015, 7:36
Сообщение #17
Стаж: 14 лет

Сообщений: 797
Благодарностей: 459
Полезность: 514

Апну темку пожалуй) Заинтересовал этот плагин по флагу) Сделал по имунке. Но почему-то блочит только модель обычному игроку. оО как сделать чтобы у обычных игроков вообще не было этой гранаты? только дымовая?

Cкрытый текст

Код:
#include <amxmodx>
#include <fakemeta>
#include <cstrike>
#include <fun>
#include <engine>
#include <amxmisc>

#define PLUGIN_NAME "Nade Health"
#define PLUGIN_VERSION "0.2"
#define PLUGIN_AUTHOR "Dorus"

#define V_MODEL "models/v_he_mk_nade.mdl"
#define P_MODEL "models/p_he_mk_nade.mdl"
#define W_MODEL "models/w_he_mk_nade.mdl"

#define GIVE_HP 30

#define SMOKE_SCALE 30
#define SMOKE_FRAMERATE 12

new ExplSpr, ExplSpr2, ExplSpr3, ExplYO, g_iSpriteCircle

// do not edit
new const g_sound_explosion[] = "weapons/sg_explode.wav"
new const g_classname_grenade[] = "grenade"
new g_eventid_createsmoke

public plugin_init() {
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

register_forward(FM_EmitSound, "forward_emitsound")
register_forward(FM_PlaybackEvent, "forward_playbackevent")
register_event( "CurWeapon", "CurWeapon", "be", "1=1" )
register_forward( FM_SetModel, "forward_model", 1 )

// we do not precaching, but retrieving the indexes
g_eventid_createsmoke = engfunc(EngFunc_PrecacheEvent, 1, "events/createsmoke.sc")
}

public plugin_precache()
{
ExplSpr = precache_model("sprites/gp_1.spr");
ExplSpr2 = precache_model("sprites/gp_2.spr");
ExplSpr3 = precache_model("sprites/gp_3.spr");
precache_sound("woomen_expr.wav")
ExplYO = precache_model("sprites/woomensx.spr");

g_iSpriteCircle = precache_model( "sprites/shockwave.spr" );

precache_model(V_MODEL)
precache_model(W_MODEL)
precache_model(P_MODEL)
}

public CurWeapon(id)
{
if( get_user_flags(id) & ADMIN_IMMUNITY )
{
if(is_user_connected(id) && is_user_alive(id))
{
if(get_user_weapon(id) == CSW_SMOKEGRENADE)
{
set_pev(id, pev_viewmodel2, V_MODEL)
set_pev(id, pev_weaponmodel2, P_MODEL)
}
}
}
}

public forward_model( entity, const model[] )
{
if( !pev_valid( entity ) ) return FMRES_IGNORED;

if(equal( model, "models/w_smokegrenade.mdl" ))
{
engfunc ( EngFunc_SetModel, entity, W_MODEL );
}
return FMRES_IGNORED;
}

public forward_emitsound(ent, channel, const sound[])
{
if (!equal(sound, g_sound_explosion) || !is_grenade(ent))
return FMRES_IGNORED

static Float:origin[3]
static id
id = pev(ent, pev_owner)
pev(ent, pev_origin, origin)
engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, "woomen_expr.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
//engfunc(EngFunc_RemoveEntity, ent)
//create_smoke(origin)

message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
write_byte(TE_SPRITETRAIL) //?????? ???????
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+20)
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+80)
write_short(ExplSpr)
write_byte(20)
write_byte(20)
write_byte(4)
write_byte(20)
write_byte(10)
message_end()

message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
write_byte(TE_SPRITETRAIL) //?????? ???????
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+20)
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+80)
write_short(ExplSpr2)
write_byte(20)
write_byte(20)
write_byte(4)
write_byte(20)
write_byte(10)
message_end()

message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
write_byte(TE_SPRITETRAIL) //?????? ???????
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+20)
write_coord(floatround(origin[0]))
write_coord(floatround(origin[1]))
write_coord(floatround(origin[2])+80)
write_short(ExplSpr3)
write_byte(20)
write_byte(20)
write_byte(4)
write_byte(20)
write_byte(10)
message_end()

message_begin(MSG_ALL, SVC_TEMPENTITY);
write_byte(TE_SPRITE);
write_coord(floatround(origin[0]));
write_coord(floatround(origin[1]));
write_coord(floatround(origin[2]) + 70);
write_short(ExplYO);
write_byte(5);
write_byte(100);
message_end();//MESSAGE ENDING

create_blast_circle(ent, 10, 255, 40)

new tre
while((tre = find_ent_in_sphere(tre,origin,250.0)) != 0)
{
if(is_user_alive(tre) && get_user_team(tre) == get_user_team(id))
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, tre)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(170)
write_byte(255)
write_byte(0)
write_byte(75)
message_end()

set_user_rendering(tre,kRenderFxGlowShell,0,255,50,kRenderNormal,20)
set_task(1.5, "UnEffect", tre)

set_user_health(tre,100)
}
}

return FMRES_SUPERCEDE
}

public UnEffect(tre)
{
if(is_user_alive(tre))
{
set_user_rendering(tre)
}
}

public forward_playbackevent(flags, invoker, eventindex) {
// we do not need a large amount of smoke
if (eventindex == g_eventid_createsmoke)
return FMRES_SUPERCEDE

return FMRES_IGNORED
}

bool:is_grenade(ent) {
if (!pev_valid(ent))
return false

static classname[sizeof g_classname_grenade + 1]
pev(ent, pev_classname, classname, sizeof g_classname_grenade)
if (equal(classname, g_classname_grenade))
return true

return false
}

stock bool:is_hull_vacant(const Float:origin[3], hull) {
new tr = 0
engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr)
if (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen))
return true

return false
}

stock create_blast_circle(ent, R, G, B)
{
static Float: fOrigin[3], iOrigin[3];

pev(ent, pev_origin, fOrigin);

FVecIVec( fOrigin, iOrigin );

message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
write_byte( TE_BEAMCYLINDER );
write_coord( iOrigin[ 0 ] );
write_coord( iOrigin[ 1 ] );
write_coord( iOrigin[ 2 ]);
write_coord( iOrigin[ 0 ] );
write_coord( iOrigin[ 1 ] );
write_coord( iOrigin[ 2 ] + 250) ; // radius
write_short( g_iSpriteCircle );
write_byte( 0 ); // start framerate
write_byte( 1 ); // framerate
write_byte( 5 ); // life
write_byte( 30 ); // width
write_byte( 1 ); // amplitude

write_byte®;
write_byte(G);
write_byte(B);

write_byte( 255 ); // brightness
write_byte( 5 ); // speed
message_end();
}



Отредактировал: Takashi Murakami, - 16.12.2015, 7:37
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Vaqtincha
сообщение 16.12.2015, 8:39
Сообщение #18
Стаж: 11 лет

Сообщений: 981
Благодарностей: 352
Полезность: < 0

чё за бред в curweapon'е?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GDon
сообщение 16.12.2015, 9:09
Сообщение #19


Стаж: 12 лет

Сообщений: 267
Благодарностей: 60
Полезность: 124

Цитата(Vaqtincha @ 16.12.2015, 13:35) *
чё за бред в curweapon'е?


Сможешь исправить этот плагин?)


*_*_*_*_*_*_*_*_*_*_ВСЕ_О_КС_*_*_*_*_*_*_*_*_*_*
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Vaqtincha
сообщение 16.12.2015, 9:19
Сообщение #20
Стаж: 11 лет

Сообщений: 981
Благодарностей: 352
Полезность: < 0

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