HLFX.Ru Forum Страницы (4): « 1 [2] 3 4 »
Показать все 52 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- И снова анимации (https://hlfx.ru/forum/showthread.php?threadid=1067)


Отправлено rocksTaa 25-12-2007 в 11:17:

Благодарю)))

__________________
rt


Отправлено rocksTaa 25-12-2007 в 15:23:

Ku2zoff>> я сделал примари атакуу эМки скажем так:
************************
void Cm4a1::PrimaryAttack()
{
// don't fire if empty
if (m_iClip <= 0)
}
// one less round in the clip
m_iClip--;

// add a muzzle flash
m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH;

// player "shoot" animation
{
if(m_iAnimLevel == 0)
{
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/m4a1-unsil.wav", RANDOM_FLOAT(0.95, 1.0), ATTN_NORM, 0, 110 );
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
m_pPlayer->pev->punchangle.x -= 1.2;
SendWeaponAnim( m4a1_FIRE3 );
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
}
if(m_iAnimLevel == 1)
{
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/m4a1-1.wav", RANDOM_FLOAT(0.95, 1.0), ATTN_NORM, 0, 110 );
m_pPlayer->m_iWeaponVolume = QUIET_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
m_pPlayer->pev->punchangle.x -= 1.5;
SendWeaponAnim( m4a1_FIRE1 );
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
}
}
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );

Vector vecSrc(m_pPlayer->GetGunPosition());
Vector vecAim(m_pPlayer->GetAutoaimVector(AUTOAIM_2DEGREES));
Vector vecAcc(VECTOR_CONE_2DEGREES);
Vector vecDir(m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAim, vecAcc, 8192,BULLET_PLAYER_m4a1, 2, 0, m_pPlayer->pev, m_pPlayer->random_seed ));
m_pPlayer->random_seed;

PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_event, 0.0,
(float *)&g_vecZero, (float *)&g_vecZero,
vecDir.x, vecDir.y, 0, 0, (m_iClip ? 0 : 1), 0 );

m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.085;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 1.085,2.085);
}

как сделать такие вот везчи я думаю ты 100 пудо взнаеш ну хотяб приблизительно));
1-SendWeaponAnim( m4a1_FIRE1 );-как поставить рандомно m4a1_FIRE1 или m4a1_FIRE2, а то ( m4a1_FIRE1, m4a1_FIRE1 )не катит.
/
2-пунч англ и сделал разным но хочецо и скажем
Vector vecAcc(VECTOR_CONE_2DEGREES);исправить для разных условий с глушаком и без, а то я пробовал но както не выходит ничего.

__________________
rt


Отправлено Ku2zoff 26-12-2007 в 07:16:

switch(RANDOM_LONG(0,1))
{
case 0:
SendWeaponAnim( m4a1_FIRE1 ); break;
case 1:
SendWeaponAnim( m4a1_FIRE2 ); break;
}

кейсов может быть дофига. Рандом лонг - значение от минимального до максимального номера кейса.

Вроде нигде не ошибся


Отправлено rocksTaa 26-12-2007 в 09:35:

Пасиба а то я пробовал делать как на клиенте но неполучалось)), а по 2му вапросу нет никаких идей?

__________________
rt


Отправлено Ku2zoff 26-12-2007 в 12:52:

Vector vecAcc; //Просто обозначим

if(m_iAnimLevel == 0)
{
vecAcc = Vector(VECTOR_CONE_2DEGREES); //зададим значение
}

if(m_iAnimLevel == 1)
{
vecAcc = Vector(VECTOR_CONE_4DEGREES); //зададим значение
}

и вот ещё таблица точности(я это так назвал) - для пулемёта, например, т.к. разброс большой. В ней учитывается разброс пуль в зависимости от скорости игрока и его положения(сидит, стоит и т.п.)

C++ Source Code:
1
Vector accuracy;
2
 
3
float speed = m_pPlayer->pev->velocity.Length();
4
 
5
//This is my accuracy table
6
if(speed >= 400) accuracy = Vector( 0.18, 0.18, 0.18 );
7
if(speed >= 300 && speed < 400) accuracy = Vector( 0.16, 0.16, 0.16 );
8
if(speed >= 200 && speed < 300) accuracy = Vector( 0.14, 0.14, 0.14 );
9
if(speed >= 150 && speed < 200) accuracy = Vector( 0.12, 0.12, 0.12 );
10
if(speed >= 100 && speed < 150) accuracy = Vector( 0.10, 0.10, 0.10 );
11
if(speed >= 50 && speed < 100) accuracy = Vector( 0.08, 0.08, 0.08 );
12
if(speed >= 0 && speed < 50) accuracy = Vector( 0.06, 0.06, 0.06 );
13
else accuracy = Vector( 0.2, 0.2, 0.2 );
14
 
15
if ( m_pPlayer->pev->flags & FL_DUCKING )	// crouching
16
{
17
  accuracy = accuracy/2;//It`s really works!
18
}
19
else if(!(FBitSet(m_pPlayer->pev->flags, FL_ONGROUND)) //player is in air
20
{
21
  accuracy = accuracy*2;
22
}
23
else
24
{
25
  accuracy = accuracy;
26
}
27
 
28
vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, accuracy, 8192, BULLET_PLAYER_9MM, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );


Vector( 0.18, 0.18, 0.18 );

значения отклонения у каждой пушки могут быть свои. Значение speed лучше не менять. Чем больше цифры, тем больше разброс(зависит от свойств пушки).


Отправлено rocksTaa 26-12-2007 в 17:58:

НУ БЛИН КРУТА!!!! Пасиб бальшое)))

Добавлено 26-12-2007 в 20:58:

Ku2zoff>> слухай мот я чё нитак делаю но у меня ничег о не изменяется после добавления выше указанных строк всё компица и cl, и mp, но не робит и всё тут может гдето нужно указать чтонибудь ежо?

__________________
rt


Отправлено Ku2zoff 27-12-2007 в 01:54:

rocksTaa что именно не работает?

Добавлено 27-12-2007 в 07:54:

Может у тебя FireBulletsPlayer вызывается несколько раз(с одной и с другой меткостью)? Или вектор меткости определён несколько раз совершенно по-разному?

Совет: вставляешь "таблицу" меткости, уменьшаешь немного значения отклонений(процентов на 15) и дописываешь условие:

C++ Source Code:
1
if(m_iAnimLevel == 0)
2
{
3
  accuracy = accuracy;//без глушака - бьёт метко
4
}
5
if(m_iAnimLevel == 1)
6
{
7
  accuracy = accuracy*0.2;//с глушаком чуть-чуть косее
8
}


А свой vecAcc убираешь из кода.


Отправлено rocksTaa 27-12-2007 в 09:07:

Ku2zoff>>сделал вот так вот но нифиг всерно одинаково;
*********************
void Cm4a1::PrimaryAttack()
{
// don't fire if empty
if (m_iClip <= 0)
{
PlayEmptySound();
m_flNextPrimaryAttack = 0.15;
return;
}
// one less round in the clip
m_iClip--;

// add a muzzle flash
m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH;

// player "shoot" animation
{
if(m_iAnimLevel == 0)
{
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/m4a1-unsil.wav", RANDOM_FLOAT(0.95, 1.0), ATTN_NORM, 0, 110 );
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
m_pPlayer->pev->punchangle.x -= 1.2;
SendWeaponAnim( m4a1_FIRE3 );
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
}
if(m_iAnimLevel == 1)
{
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/m4a1-1.wav", RANDOM_FLOAT(0.95, 1.0), ATTN_NORM, 0, 110 );
m_pPlayer->m_iWeaponVolume = QUIET_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;
m_pPlayer->pev->punchangle.x -= 1.5;
SendWeaponAnim( m4a1_FIRE1 );
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
}
}
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );

Vector vecSrc(m_pPlayer->GetGunPosition());
Vector vecAim(m_pPlayer->GetAutoaimVector(AUTOAIM_2DEGREES));
Vector accuracy;

float speed = m_pPlayer->pev->velocity.Length();

//This is my accuracy table
if(speed >= 400) accuracy = Vector( 0.18, 0.18, 0.18 );
if(speed >= 300 && speed < 400) accuracy = Vector( 0.16, 0.16, 0.16 );
if(speed >= 200 && speed < 300) accuracy = Vector( 0.14, 0.14, 0.14 );
if(speed >= 150 && speed < 200) accuracy = Vector( 0.12, 0.12, 0.12 );
if(speed >= 100 && speed < 150) accuracy = Vector( 0.10, 0.10, 0.10 );
if(speed >= 50 && speed < 100) accuracy = Vector( 0.08, 0.08, 0.08 );
if(speed >= 0 && speed < 50) accuracy = Vector( 0.06, 0.06, 0.06 );
else accuracy = Vector( 0.2, 0.2, 0.2 );

if ( m_pPlayer->pev->flags & FL_DUCKING )// crouching
{
accuracy = accuracy/2;//It`s really works!
}
else if(!(FBitSet(m_pPlayer->pev->flags, FL_ONGROUND))) //player is in air
{
accuracy = accuracy*2;
}
else
{
accuracy = accuracy;
}

Vector vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAim, accuracy, 8192, BULLET_PLAYER_9MM, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );
m_pPlayer->random_seed;

if(m_iAnimLevel == 0)
{
accuracy = accuracy;
}
if(m_iAnimLevel == 1)
{
accuracy = accuracy*0.2;
}

PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_event, 0.0,
(float *)&g_vecZero, (float *)&g_vecZero,
vecDir.x, vecDir.y, 0, 0, (m_iClip ? 0 : 1), 0 );

m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.085;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 1.085,2.085);
}

__________________
rt


Отправлено Ku2zoff 28-12-2007 в 07:28:

C++ Source Code:
1
[color=red]Vector vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAim, accuracy, 8192, BULLET_PLAYER_9MM, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );[/color]
2
m_pPlayer->random_seed;
3
 
4
if(m_iAnimLevel == 0)
5
{
6
  accuracy = accuracy;
7
}
8
if(m_iAnimLevel == 1)
9
{
10
  accuracy = accuracy*0.2;
11
}


rocksTaa вектор accuracy должен быть определён раньше вызова стрельбы, т.е. все строчки с accuracy = должны быть выше строчки Vector vecDir = m_pPlayer->FireBulletsPlayer

вроде из-за этого и не работет


Отправлено rocksTaa 29-12-2007 в 15:57:

Ku2zoff>>я ваще низнаю чё может быть переделал и так и этак нихочет и всё может в другом дело?

__________________
rt


Отправлено Ku2zoff 29-12-2007 в 16:05:

Код прмари аттак из пулемёта:

C++ Source Code:
1
void CMGun::PrimaryAttack()
2
{
3
  if ( m_iClip && m_pPlayer->pev->waterlevel != 3)//don't fire underwater
4
  {
5
 
6
    m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
7
    m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
8
 
9
    m_iClip--;
10
 
11
    // player "shoot" animation
12
    m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
13
 
14
    UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
15
 
16
    Vector vecSrc	 = m_pPlayer->GetGunPosition( );
17
    Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_10DEGREES );
18
 
19
    Vector vecDir;
20
 
21
    Vector accuracy;
22
 
23
    float speed = m_pPlayer->pev->velocity.Length();
24
 
25
    //This is my accuracy table
26
    if(speed >= 400) accuracy = Vector( 0.18, 0.18, 0.18 );
27
    if(speed >= 300 && speed < 400) accuracy = Vector( 0.16, 0.16, 0.16 );
28
    if(speed >= 200 && speed < 300) accuracy = Vector( 0.14, 0.14, 0.14 );
29
    if(speed >= 150 && speed < 200) accuracy = Vector( 0.12, 0.12, 0.12 );
30
    if(speed >= 100 && speed < 150) accuracy = Vector( 0.10, 0.10, 0.10 );
31
    if(speed >= 50 && speed < 100) accuracy = Vector( 0.08, 0.08, 0.08 );
32
    if(speed >= 0 && speed < 50) accuracy = Vector( 0.06, 0.06, 0.06 );
33
    else accuracy = Vector( 0.2, 0.2, 0.2 );
34
 
35
    if ( m_pPlayer->pev->flags & FL_DUCKING )	// crouching
36
    {
37
      accuracy = accuracy/2;//It`s really works!
38
    }
39
    else
40
    {
41
      accuracy = accuracy;
42
    }
43
 
44
    vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, accuracy, 8192, BULLET_PLAYER_MGUN, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );
45
 
46
    PLAYBACK_EVENT_FULL( 0, m_pPlayer->edict(), m_usFireMachinegun, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, pev->body, 0, 0, 0 );
47
 
48
    m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * 45; //Step back, we have a high muzzle energy
49
 
50
    m_flNextPrimaryAttack = gpGlobals->time + 0.09;
51
    m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.46;
52
  }
53
  else
54
  {
55
    PlayEmptySound( 4 );
56
    m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
57
  }
58
}


Здесь игрока ещё и назад относит отдачей :grin:


Отправлено rocksTaa 01-01-2008 в 13:45:

пасиб попробую применить может получится.))

Добавлено вчера в 19:45:

Ku2zoff>> всё работает просто супер, но вот проблемка ездь и суть её заложена как я понял в строке,
******
PLAYBACK_EVENT_FULL( 0, m_pPlayer->edict(), m_usFireMachinegun, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, pev->body, 0, 0, 0 );
********
у меня пушка стреляет и оставляет на стене 2 декаля , т.е по 2 патрона как сделать чтоб по нармальному шмаляла?

__________________
rt


Отправлено Тренсфер 02-01-2008 в 13:41:

А нука покажи код на клиенте Вот там декали и накладываются.
Хотя можно тут поробовать заменить на :

C++ Source Code:
1
int flags;
2
#if defined( CLIENT_WEAPONS )
3
flags = FEV_NOTHOST;
4
#else
5
flags = 0;
6
#endif
7
 
8
PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usFireMachinegun, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, vecDir.x, vecDir.y, pev->body, 0, 0, 0 ); //Посылаем эвент на клиент

Но врядли от флага эвента прок будет
Ещё глянь в vecDir = m_pPlayer->FireBulletsPlayer( 1/*количество пуль одновременно*/
Колиличество пуль верно указано.

Добавлено 02-01-2008 в 16:41:

Хоть убей-после нового года ни как не вспомню что флаг делает

__________________
Хотелось бы, чтобы не только хотелось...


Отправлено rocksTaa 02-01-2008 в 14:42:

Тренсфер>> этат код не кактит разброс перестаёт работать а вот мой клиент:
************************
//======================
// m4a1 START
//======================

enum m4a1_e
{
m4a1_IDLE = 0,
m4a1_FIRE1,
m4a1_FIRE2,
m4a1_FIRE3,
m4a1_RELOAD,
m4a1_DEPLOY,
};

void EV_Firem4a1( event_args_t *args )
{
int idx;
vec3_t origin;
vec3_t angles;
vec3_t velocity;

vec3_t ShellVelocity;
vec3_t ShellOrigin;
int shell;
vec3_t vecSrc, vecAiming;
vec3_t up, right, forward;
float flSpread = 0.01;

idx = args->entindex;
VectorCopy( args->origin, origin );
VectorCopy( args->angles, angles );
VectorCopy( args->velocity, velocity );

AngleVectors( angles, forward, right, up );

if ( EV_IsLocal( idx ) )
{
V_PunchAxis( 0, gEngfuncs.pfnRandomFloat( -2, 2 ) );
}

shell = gEngfuncs.pEventAPI->EV_FindModelIndex ("models/shell.mdl");
EV_GetDefaultShellInfo( args, origin, velocity, ShellVelocity, ShellOrigin, forward, right, up, 12, -10, 7 );
EV_EjectBrass(ShellOrigin, ShellVelocity, angles[ YAW ], shell, TE_BOUNCE_SHELL);

switch( gEngfuncs.pfnRandomLong( 0, 1 ) )
{
case 0:
break;
case 1:
break;
}

EV_GetGunPosition( args, vecSrc, origin );

EV_HLDM_MuzzleFlash( vecSrc, 2.0 + gEngfuncs.pfnRandomFloat( -0.2, 0.2 ) );

VectorCopy( forward, vecAiming );
EV_HLDM_FireBullets( idx,
forward,
right,
up,
1,
vecSrc,
vecAiming,
8192,
BULLET_PLAYER_m4a1,
0,
0,
args->fparam1,
args->fparam2 );
}
//======================
// m4a1 END
//======================

Добавлено 02-01-2008 в 17:42:

АХ ДА ВОТ ЕЩЁ ЧТО:
я вот эдыкыю хрень придумал но надо бы её подмозговать, а вот собсно что я придумал вот отрывок кода
****************
void Cak47::PrimaryAttack()
{
// don't fire if empty
if (m_iClip <= 0)
{
PlayEmptySound();
m_flNextPrimaryAttack = 0.15;
return;
}

// Weapon sound
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;

// one less round in the clip
m_iClip--;

// add a muzzle flash
m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH;

// player "shoot" animation
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );

Vector vecSrc(m_pPlayer->GetGunPosition());
Vector vecAim(m_pPlayer->GetAutoaimVector(AUTOAIM_2DEGREES));
Vector vecAcc(VECTOR_CONE_2DEGREES);
Vector vecDir(m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAim, vecAcc, 8192,BULLET_PLAYER_ak47, 2, 0, m_pPlayer->pev, m_pPlayer->random_seed ));
m_pPlayer->random_seed;
switch(RANDOM_LONG(0,5))
{
case 0:
m_pPlayer->pev->punchangle.x = 1.2;
break;
case 1:
m_pPlayer->pev->punchangle.x -= 3.2;
break;
case 2:
m_pPlayer->pev->punchangle.y -= 2.7;
break;
case 3:
m_pPlayer->pev->punchangle.x -= 1.2;
break;
case 4:
m_pPlayer->pev->punchangle.y = 2.3;
break;
case 5:
m_pPlayer->pev->punchangle.x -= 2.4;
break;
}
PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_event, 0.0,
(float *)&g_vecZero, (float *)&g_vecZero,
vecDir.x, vecDir.y, 0, 0, (m_iClip ? 0 : 1), 0 );

m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 1.085,2.085);
}
***************************
а вот что надо я хочу чтобы эти условия:
switch(RANDOM_LONG(0,5))
{
case 0:
m_pPlayer->pev->punchangle.x = 1.2;
break;
case 1:
m_pPlayer->pev->punchangle.x -= 3.2;
break;
case 2:
m_pPlayer->pev->punchangle.y -= 2.7;
break;
case 3:
m_pPlayer->pev->punchangle.x -= 1.2;
break;
case 4:
m_pPlayer->pev->punchangle.y = 2.3;
break;
case 5:
m_pPlayer->pev->punchangle.x -= 2.4;
break;
}
начали работать только после скажем 2х или 3х выстрелов
можно ли это сделать?

__________________
rt


Отправлено Тренсфер 02-01-2008 в 15:06:

C++ Source Code:
1
switch( gEngfuncs.pfnRandomLong( 0, 1 ) )
2
{
3
case 0:
4
    break;
5
case 1:
6
    break;
7
}

Убери раз ничего не делает.
C++ Source Code:
EV_HLDM_MuzzleFlash( vecSrc, 2.0 + gEngfuncs.pfnRandomFloat( -0.2, 0.2 ) );

Случайно не EV_MuzzleFlash(); ? Это так к слову
Попробуй поколдовать над последними четыремя параметрами в EV_HLDM_FireBullets примерно так.
C++ Source Code:
EV_HLDM_FireBullets( idx, forward, right, up, 1/*количество пуль вылетающих одновременно*/, vecSrc/*откуда вылетает пуля (позиция пушки)*/, vecAiming/*куда попадает пуля*/, 8192/*дальность*/, BULLET_PLAYER_m4a1/*тип пуль */, 2/*количество трассирующих пуль*/, &tracerCount[idx-1], args->fparam1, args->fparam2 );

Работать после трёх выстрелов... Это как ? Назови максимальное время между двумя очередями для расчёта.

Добавлено 02-01-2008 в 18:06:

Заведи переменную и при каждом выстреле увеличивай её на 1. Перед толчком делай проверку на (i>=3). Вфункции idle обнуляй её.

__________________
Хотелось бы, чтобы не только хотелось...


Временная зона GMT. Текущее время 05:30. Страницы (4): « 1 [2] 3 4 »
Показать все 52 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024