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

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

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

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

История благодарностей участнику TJhack ::: Спасибо сказали: 26
Дата поста: В теме: За сообщение: Спасибо сказали:
28.3.2016, 12:44 Российский Паблик Сервер 18+ ©
Хороший сервер постоянно играл тут много друзей нашёл )))
XyLiGaN
20.7.2015, 19:13 Плагины от neugomon'a.
Плагины качественные у него...
c0o_PeR
24.6.2015, 12:08 Провокация от Safety1st
Скажу одно в отличии от Сафа неугомон хоть помогал и помогает людям на счёт плагинов и.т.д никогда не отказывает в помощи !
Fight, GTDemoN, jokin, neygomon
16.5.2015, 8:32 [Бесплатно] Плагин-сборка классического/паблик сервера
Цитата(Safety1st @ 16.5.2015, 1:52) *
И автор затеи в частности crazy.gif
--


Очень жаль, парень подавал большие надежды... smile.gif

Если тебе данная тема не интересна то какого ты прёшь сюда? (И кто удаляет мои сообщения офигеть?)
[WPMG]PRoSToTeM@
30.3.2015, 19:44 Склад маленьких плагинов
Помогите в чём проблема почему hud так криво показывает?
screen

sma
Код:
#define VERSION "3.1b"

#include <amxmodx>
#include <amxmisc>

/*---------------EDIT ME------------------*/
#define NUM_MESSAGES 25
//#define USE_DHUD // comment this to use standard HUD messages; it might be enabled for cstrike only
//#define DEBUG // uncomment to get read results into server console
/*----------------------------------------*/

#define LINE_LEN 608 // read lines buffer
#define HUD_LEN 128 // max allowed HUD message length
#define TEXT_LEN 191 // max allowed text message length

#if defined USE_DHUD && AMXX_VERSION_NUM < 183
// AMXX 1.8.3 since git3790 dev build has its own support of DHUD messages
#include <dhudmessage>
#endif

new text_messages[NUM_MESSAGES][TEXT_LEN]
new hud_messages[NUM_MESSAGES][4][HUD_LEN]
new hud_message_colors[NUM_MESSAGES][4][3]
new giMsgSayText

new num_hudmessages, num_textmessages
new cur_hudmessage[33], cur_textmessage[33]
new pHudLen, pTextLen, pHudLoc

public plugin_init() {
register_plugin( "GHW Auto Message Displayer" , VERSION, "GHW_Chronic/Safety1st" )

pHudLen = register_cvar( "advertise_hud_len", "60" )
pTextLen = register_cvar( "advertise_text_len", "60" )
pHudLoc = register_cvar( "advertise_hud_loc", "1" )

set_task( 7.0, "ReadConfig" )
}

public ReadConfig() {
ReadConfigFile()

if ( num_hudmessages )
set_task( get_pcvar_float(pHudLen), "DisplayHudMessage", .flags = "b" )
if ( num_textmessages ) {
set_task( get_pcvar_float(pTextLen), "DisplayTextMessage", .flags = "b" )
giMsgSayText = get_user_msgid("SayText")
}
}

public ReadConfigFile() {
new szConfigFile[192]
get_localinfo( "amxx_configsdir", szConfigFile, 63 )
format( szConfigFile, charsmax(szConfigFile), "%s/messages.ini", szConfigFile )

new Fsize = file_size(szConfigFile, 1 /* return number of lines */ )
new read[LINE_LEN], trash, j, position, startpos, endpos
for(new i=0;i<Fsize;i++)
{
read_file(szConfigFile,i,read,LINE_LEN - 1,trash)
if(containi(read,"Text")==0)
{
i++
if(num_textmessages==NUM_MESSAGES) {
log_amx("Could not add new text message because text message limit is reached; max = %d", NUM_MESSAGES)
continue // do not read any text messages anymore
}
read_file(szConfigFile,i,read,LINE_LEN - 1,trash)
replace_all(read,LINE_LEN - 1,"[blue]","^x03")
replace_all(read,LINE_LEN - 1,"[/blue]","^x01")
replace_all(read,LINE_LEN - 1,"[red]","^x03")
replace_all(read,LINE_LEN - 1,"[/red]","^x01")
replace_all(read,LINE_LEN - 1,"[green]","^x04")
replace_all(read,LINE_LEN - 1,"[/green]","^x01")
replace_all(read,LINE_LEN - 1,"[Blue]","^x03")
replace_all(read,LINE_LEN - 1,"[/Blue]","^x01")
replace_all(read,LINE_LEN - 1,"[Red]","^x03")
replace_all(read,LINE_LEN - 1,"[/Red]","^x01")
replace_all(read,LINE_LEN - 1,"[Green]","^x04")
replace_all(read,LINE_LEN - 1,"[/Green]","^x01")
format(text_messages[num_textmessages],TEXT_LEN - 1,"^x04^x01%s",read)
#if defined DEBUG
server_print( "^nTEXT: %s^n", text_messages[num_textmessages] )
#endif
num_textmessages++
}
else if(containi(read,"Hud")==0)
{
i++
if(num_hudmessages==NUM_MESSAGES) {
log_amx("Could not add new HUD message because HUD message limit is reached; max = %d", NUM_MESSAGES)
continue // do not read any HUD messages anymore
}
read_file(szConfigFile,i,read, LINE_LEN - 1,trash)
j = 0, position = 0
while(position < strlen(read) && j<4)
{
while(!contain(read[position]," ")) position++
if(!containi(read[position],"[blue]"))
{
startpos = position + 6
endpos = containi(read[startpos],"[/blue]")
if(endpos == -1) {
#if defined DEBUG
server_print( "^nHUD problem - can't find closing tag: %s^n", read[startpos] )
#endif
break
}
endpos += startpos
position = endpos + 7
hud_message_colors[num_hudmessages][j][0] = 0
hud_message_colors[num_hudmessages][j][1] = 100
hud_message_colors[num_hudmessages][j][2] = 255
}
else if(!containi(read[position],"[red]"))
{
startpos = position + 5
endpos = containi(read[startpos],"[/red]")
if(endpos == -1) {
#if defined DEBUG
server_print( "^nHUD problem - can't find closing tag: %s^n", read[startpos] )
#endif
break
}
endpos += startpos
position = endpos + 6
hud_message_colors[num_hudmessages][j][0] = 255
hud_message_colors[num_hudmessages][j][1] = 0
hud_message_colors[num_hudmessages][j][2] = 0
}
else if(!containi(read[position],"[green]"))
{
startpos = position + 7
endpos = containi(read[startpos],"[/green]")
if(endpos == -1) {
#if defined DEBUG
server_print( "^nHUD problem - can't find closing tag: %s^n", read[startpos] )
#endif
break
}
endpos += startpos
position = endpos + 8
hud_message_colors[num_hudmessages][j][0] = 0
hud_message_colors[num_hudmessages][j][1] = 255
hud_message_colors[num_hudmessages][j][2] = 0
}
else if(!containi(read[position],"[yellow]"))
{
startpos = position + 8
endpos = containi(read[startpos],"[/yellow]")
if(endpos == -1) {
#if defined DEBUG
server_print( "^nHUD problem - can't find closing tag: %s^n", read[startpos] )
#endif
break
}
endpos += startpos
position = endpos + 9
hud_message_colors[num_hudmessages][j][0] = 255
hud_message_colors[num_hudmessages][j][1] = 255
hud_message_colors[num_hudmessages][j][2] = 0
}
else if(!containi(read[position],"[orange]"))
{
startpos = position + 8
endpos = containi(read[startpos],"[/orange]")
if(endpos == -1) {
#if defined DEBUG
server_print( "^nHUD problem - can't find closing tag: %s^n", read[startpos] )
#endif
break
}
endpos += startpos
position = endpos + 9
hud_message_colors[num_hudmessages][j][0] = 255
hud_message_colors[num_hudmessages][j][1] = 128
hud_message_colors[num_hudmessages][j][2] = 64
}
else if(!containi(read[position],"[pink]"))
{
startpos = position + 6
endpos = containi(read[startpos],"[/pink]")
if(endpos == -1) {
#if defined DEBUG
server_print( "^nHUD problem - can't find closing tag: %s^n", read[startpos] )
#endif
break
}
endpos += startpos
position = endpos + 7
hud_message_colors[num_hudmessages][j][0] = 255
hud_message_colors[num_hudmessages][j][1] = 0
hud_message_colors[num_hudmessages][j][2] = 128
}
else if(!containi(read[position],"[indigo]"))
{
startpos = position + 8
endpos = containi(read[startpos],"[/indigo]")
if(endpos == -1) {
#if defined DEBUG
server_print( "^nHUD problem - can't find closing tag: %s^n", read[startpos] )
#endif
break
}
endpos += startpos
position = endpos + 9
hud_message_colors[num_hudmessages][j][0] = 0
hud_message_colors[num_hudmessages][j][1] = 255
hud_message_colors[num_hudmessages][j][2] = 255
}
else if(!containi(read[position],"[white]"))
{
startpos = position + 7
endpos = containi(read[startpos],"[/white]")
if(endpos == -1) {
#if defined DEBUG
server_print( "^nHUD problem - can't find closing tag: %s^n", read[startpos] )
#endif
break
}
endpos += startpos
position = endpos + 8
hud_message_colors[num_hudmessages][j][0] = 255
hud_message_colors[num_hudmessages][j][1] = 255
hud_message_colors[num_hudmessages][j][2] = 255
}
else{
startpos = position
endpos = containi(read[startpos],"[") // may be where are next pair of tags?
if(endpos == -1) {
// no, there are not ;)
endpos = LINE_LEN
position = LINE_LEN
}
else {
endpos += startpos
position = endpos
}
hud_message_colors[num_hudmessages][j][0] = 255
hud_message_colors[num_hudmessages][j][1] = 255
hud_message_colors[num_hudmessages][j][2] = 255
}

copy(hud_messages[num_hudmessages][j], min(HUD_LEN - 1,endpos - startpos), read[startpos])
#if defined DEBUG
server_print( "^nHUD: %s^n", hud_messages[num_hudmessages][j] )
#endif
j++
}
num_hudmessages++
}
}
}

public DisplayHudMessage() {
new Float:loc[3]
switch (get_pcvar_num(pHudLoc) ) {
case 2: {
loc[0] = -1.0
loc[1] = -1.0
}
default: {
loc[0] = -1.0
#if defined USE_DHUD
loc[1] = 0.14
#else
loc[1] = 0.19
#endif
}
}

new iPlayers[32], iPlayersNum, iPlayer
get_players( iPlayers, iPlayersNum, "ch" ) // display messages to dead players only
for ( new i = 0; i < iPlayersNum; i++ ) {
iPlayer = iPlayers[i]
loc[2] = loc[1] // reset Y position
for ( new j = 0; j < 4; j++ ) {
if ( hud_messages[cur_hudmessage[iPlayer]][j][0] ) {
#if defined USE_DHUD
set_dhudmessage( hud_message_colors[cur_hudmessage[iPlayer]][j][0],hud_message_colors[cur_hudmess
age[iPlayer]][j][1],hud_message_colors[cur_hudmessage[iPlayer]][j][2],loc[0],loc
[
2], 0, 6.0, 12.0,0.1,0.2 )
show_dhudmessage( iPlayer, hud_messages[cur_hudmessage[iPlayer]][j] )
loc[2] += 0.03
#else
set_hudmessage( hud_message_colors[cur_hudmessage[iPlayer]][j][0],hud_message_colors[cur_hudmess
age[iPlayer]][j][1],hud_message_colors[cur_hudmessage[iPlayer]][j][2],loc[0],loc
[
2], 0, 6.0, 12.0,0.1,0.2,-1 )
show_hudmessage( iPlayer, hud_messages[cur_hudmessage[iPlayer]][j] )
loc[2] += 0.02
#endif
}
}
cur_hudmessage[iPlayer] = ++cur_hudmessage[iPlayer] % num_hudmessages
}
}

public DisplayTextMessage() {
new iPlayers[32], iPlayersNum, iPlayer
get_players( iPlayers, iPlayersNum, "ch" ) // display messages to dead players only
for ( new i = 0; i < iPlayersNum; i++ ) {
iPlayer = iPlayers[i]

message_begin( MSG_ONE_UNRELIABLE, giMsgSayText, _, iPlayer )
write_byte(iPlayer)
write_string( text_messages[cur_textmessage[iPlayer]] )
message_end()

cur_textmessage[iPlayer] = ++cur_textmessage[iPlayer] % num_textmessages
}
}
Fred Perry
15.1.2015, 15:58 Ищу Auto ClanWar/Mix систему
Сделал бы кто на метамоде КВ на амх это жесть )
Nebo
11.1.2015, 19:58 добавить чветной чат
Цитата(GUS @ 11.1.2015, 21:30) *
Доброго времени суток ! всех с новым годом наступившим ! ребята нужна ваша помощь ,помогите пожалуйста добавить колор чат в плагин кому не трудно !?

Держи..

GUS
23.12.2014, 18:57 Warnings
Subb98,
Как наказание можно сделать так:
Наказанного игрока переносит в спектры и он не сможет зайти пока раунд не закончится или как закончится ему бы выходило msg! Типо: Ваше наказание закончено вы можете войти в игру! За повторное нарушение можно наказывать на 2,3,4,5 раундов и т.д. Получается что система наказывает по раундам в этом случае если раундтайм на паблике 2 минуты то получается 2,4,6,8,10 минут наказания в этом случае нужно сделать так что-бы игрок когда в наказании не смог заходить в игру методом рестарта реконекта ! ИМХО
hitmany, Subb98
23.12.2014, 18:30 Warnings
Как быть с этим: допустим наказал игрока на 3 минуты и он стоит все его напарники умерли и он остался один так и будет стоять пока раундтайм не закончился?
Subb98
23.12.2014, 18:23 Warnings
Хорошая тема спс за труд! )
Subb98
13.10.2014, 9:51 Best Player Private
Цитата(fomeN @ 13.10.2014, 10:43) *
а колор чат можно сделать ? помогите пожалуйста

Правда тут я убрал выдачу денег!
best_player.sma
Код:
/**
* Modified by Safety1st
* 6/3/2014
*
* Changes are:
* • added EXCLUDE_FLAGS option;
* • proposed fix to always get the prise menu;
* • fix for buy menu overlapping;
* • added warning sound to attract 'best player' attention;
* • prise menu is shown only during 15 seconds;
* • removed max money amount limiting
* • fixed bug with array size for players (thanks to ExTPuMaJI)
* • a few minor optimizations.
*/

#include <amxmodx>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <colorchat>

// customizable parameters
#define MAX_PLAYERS 32 // Максимальное кол-во игроков на сервере, заменить своим (по умолчанию 32)
#define MIN_PLAYERS 2 // Минимальное кол-во игроков, присутствующих на сервере, необходимое для работы плагина (по умолчанию 2)
#define ROUND_NUM 3 // Порядковый номер раунда от момента начала игры, с которого плагин будет работать (по умолчанию 3)
//#define EXCLUDE_FLAGS ADMIN_IMMUNITY // uncomment to exclude players with certain flags; by default it is flag 'a'
// end of customizable parameters

#pragma semicolon 1

#if AMXX_VERSION_NUM < 183
#define MENU_FIX // fix for AMXX menus, more info here: https://bugs.alliedmods.net/show_bug.cgi?id=4778
#include <fakemeta>
const m_iMenu = 205; // cbaseplayer offset
#endif

#define MENU_KEYS (MENU_KEY_1|MENU_KEY_2)
#define PRIMARY_WEAPONS (1<<CSW_SCOUT|1<<CSW_XM1014|1<<CSW_MAC10|1<<CSW_AUG|1<<CSW_UMP45|1<<CSW_SG550|1<<CSW_GALIL|1<<CSW_FAMAS|1<<CSW_AWP|1<<CSW_MP5NAVY|1<<CSW_M249|1<<CSW_M3|1<<CSW_M4A1|1<<CSW_TMP|1<<CSW_G3SG1|1<<CSW_SG552|1<<CSW_AK47|1<<CSW_P90)
#define SECONDARY_WEAPONS (1<<CSW_P228|1<<CSW_ELITE|1<<CSW_FIVESEVEN|1<<CSW_USP|1<<CSW_GLOCK18|1<<CSW_DEAGLE)

enum _:WEAPON_DATA_SIZE
{
Data_Name[32],
Data_Item[24],
Data_Index,
Data_Ammo
};

new g_Data[][WEAPON_DATA_SIZE] =
{
{"IMI Galil", "weapon_galil", CSW_GALIL, 90},
{"GIAT FAMAS", "weapon_famas", CSW_FAMAS, 90},
{"AK47", "weapon_ak47", CSW_AK47, 90},
{"Colt M4A1", "weapon_m4a1", CSW_M4A1, 90},
{"Steyr Scout", "weapon_scout", CSW_SCOUT, 90},
{"AI Arctic Warfare Magnum", "weapon_awp", CSW_AWP, 30},
{"FN Minimi M249 Para", "weapon_m249", CSW_M249, 200},
{"Desert Eagle", "weapon_deagle", CSW_DEAGLE, 35}
};

new g_iPlayerFrags[MAX_PLAYERS + 1];
new g_iPlayerDamage[MAX_PLAYERS + 1];
new g_iPlayers[32];
new g_iPlayersNum;
new g_szBestPlayerName[32];
new g_iBestPlayer;
new g_iRandomPrise;
new g_iRoundCounter;
new g_iResetSize;

public plugin_init()
{
register_plugin("Best Player", "0.2b", "Subb98");

register_event("HLTV", "EventNewRound", "a", "1=0", "2=0");
register_event("Damage", "EventDamage", "b", "2!0", "3=0", "4!0");
register_event("DeathMsg", "EventDeathMsg", "a", "1>0");

register_logevent( "EventNewGame", 2, "0=World triggered", "1&Restart_Round_", "1=Game_Commencing" );
register_logevent( "EventRoundStart", 2, "0=World triggered", "1=Round_Start" );
register_logevent( "EventRoundEnd", 2, "1=Round_End" );

RegisterHam( Ham_Spawn, "player", "Fwd_HamPlayerSpawn_Post", .Post = 1 );

register_menucmd(register_menuid("Prise_Menu"), MENU_KEYS, "HandleMenu");

g_iResetSize = get_maxplayers() + 1;
}

public plugin_cfg()
{
new const szDisableMapTypes[][] = {"35hp_", "ka_", "awp_"}; // Типы карт, на которых плагин не будет работать
new szMapname[32];
get_mapname(szMapname, charsmax(szMapname));
for(new i; i < sizeof szDisableMapTypes; i++)
if(equali(szMapname, szDisableMapTypes[i], strlen(szDisableMapTypes[i]))) pause("ad");
}

public EventNewRound() {
g_iRoundCounter++;
Reset();
}

public EventNewGame()
g_iRoundCounter = 0;


public EventRoundStart()
g_iBestPlayer = 0;

public EventDamage(const id)
{
static pAttacker; pAttacker = get_user_attacker(id);
if(is_user_connected(pAttacker) && cs_get_user_team(pAttacker) != cs_get_user_team(id) && pAttacker != id) g_iPlayerDamage[pAttacker] += read_data(2) /* DamageTake */;
}

public EventDeathMsg()
g_iPlayerFrags[ read_data(1) /* killer */ ]++;

public EventRoundEnd()
{
if( g_iRoundCounter < ROUND_NUM || get_playersnum() < MIN_PLAYERS )
return;

new id, i, iFrags, iBestPlayerFrags, iCount;
get_players(g_iPlayers, g_iPlayersNum, "ch"); // except bots & hltv

for( i = 0; i < g_iPlayersNum; i++ ) {
id = g_iPlayers[i];

#if defined EXCLUDE_FLAGS
if( get_user_flags(id) & EXCLUDE_FLAGS )
continue;
#endif

iFrags = g_iPlayerFrags[id];

if( !iFrags || iFrags < iBestPlayerFrags )
continue;

if( iFrags > iBestPlayerFrags ) {
g_iBestPlayer = id;
iBestPlayerFrags = iFrags;
iCount = 0;
}

g_iPlayers[iCount++] = id;
}

// in case there are some players with the same frags count
for( i = 1; i < iCount; i++ ) {
id = g_iPlayers[i];
if(g_iPlayerDamage[id] > g_iPlayerDamage[g_iBestPlayer])
g_iBestPlayer = id;
}

if(g_iBestPlayer)
{
get_user_name(g_iBestPlayer, g_szBestPlayerName, charsmax(g_szBestPlayerName));
ColorChat(0, DontChange, "^4[^3BP^4] Лучшим за раунд стал ^3%s, ^4он будет награждён", g_szBestPlayerName);
}
}

public Fwd_HamPlayerSpawn_Post(id) {
if( !is_user_alive(id) || id != g_iBestPlayer )
return;

ShowMenu(id);
static szWarnSound[] = "buttons/blip2";
client_cmd( id, "spk ^"%s^"", szWarnSound );
}

Reset() {
arrayset( g_iPlayerFrags, 0, g_iResetSize );
arrayset( g_iPlayerDamage, 0, g_iResetSize );
}

ShowMenu(const id)
{
new szMenu[256], szRandomPrise[34];
g_iRandomPrise = random_num(0, 3);
switch(g_iRandomPrise)
{
case 0: add(szRandomPrise, charsmax(szRandomPrise), "Оружие");
case 1: add(szRandomPrise, charsmax(szRandomPrise), "Набор гранат");
case 2: add(szRandomPrise, charsmax(szRandomPrise), "Бронежилет и шлем");
}
formatex(szMenu, charsmax(szMenu), "\wВаш приз - \r[\y%s\r]^n^n\r1. \wВзять приз^n\r2. \wОтказаться от приза", szRandomPrise);

#if defined MENU_FIX
set_pdata_int( id, m_iMenu, 0 );
#endif

show_menu(id, MENU_KEYS, szMenu, 15, "Prise_Menu");
}

public HandleMenu(const id, const iKey)
{
switch(iKey)
{
case 0: GiveRandomPrise(id);
case 1: ColorChat(0, DontChange, "^4[^3BP^4] Игрок ^3%s ^4отказался от ^3приза", g_szBestPlayerName);
}
}

GiveRandomPrise(const id)
{
switch(g_iRandomPrise)
{
case 0: GiveRandomWeapon(id);
case 1:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
ColorChat(0, DontChange, "^4[^3BP^4] Игрок ^3%s ^4получил приз - ^3набор гранат", g_szBestPlayerName);
}
case 2:
{
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
ColorChat(0, DontChange, "^4[^3BP^4] Игрок ^3%s ^4получил приз - ^3бронежилет и шлем", g_szBestPlayerName);
}
}
}

GiveRandomWeapon(const id)
{
new iNum = random_num(0, charsmax(g_Data));
DropWeapon(id, iNum);
give_item(id, g_Data[iNum][Data_Item]);
cs_set_user_bpammo(id, g_Data[iNum][Data_Index], g_Data[iNum][Data_Ammo]);
ColorChat(0, DontChange, "^4[^3BP^4] Игрок ^3%s ^4получил приз - ^3%s", g_szBestPlayerName, g_Data[iNum][Data_Name]);
}

DropWeapon(const id, const iType)
{
new iWeapons[32], iWeponsNum;
get_user_weapons(id, iWeapons, iWeponsNum);
for(new i; i < iWeponsNum; i++)
{
if((iType == charsmax(g_Data) ? (SECONDARY_WEAPONS & (1<<iWeapons[i])) : (PRIMARY_WEAPONS & (1<<iWeapons[i]))))
{
new szWeaponName[24];
get_weaponname(iWeapons[i], szWeaponName, charsmax(szWeaponName));
engclient_cmd(id, "drop", szWeaponName);
}
}
}
fomeN
14.7.2014, 10:25 Разбан trollface
Esecman,
Вот щас даже когда его забанили ты сидишь обсираешь его (Мудила)
IORoK
14.7.2014, 10:02 Разбан trollface
Прошу администрацию данного форума если есть возможность разбанить trollface единственный добрый человек (есть ещё но не помню их) человек который оживлял данный форум своими работами. Отзывчивый понимающий!

Больше не знаю что писать про него одним словом хороший чел!
Egorka007, FeNix41, Gani97Kz, IORoK, primm, WarDeN4ik
14.7.2014, 9:44 Good bye, лалки =)
Человек столько добра сделал людям чего стоит его тема в My plugins а ты Esecman что тут сделал для народа в любой подходящем моменте пишешь в ЛС сделаю за $
Basaev
30.6.2014, 22:38 Различные модели от меня (OLAF)
OLAF,
Можете сделать admin, vip модели (CT/TT) какие нибудь не обычные? )
damilurg