AMX MOD X
Суббота, 27.04.2024, 05:22:05



Приветствую Вас Гость | RSS
[ Главная ] [ Half-Life, func_healthcharger, func_recharge - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Half-Life, func_healthcharger, func_recharge (Кто знает помогите или подскажите)
Half-Life, func_healthcharger, func_recharge
VladimirokДата: Четверг, 28.05.2009, 01:11:42 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 73
Репутация: 0
Статус: Не в сети
В Half-Life на картах есть настенные аптечки и зарядка для костюма: func_healthcharger entity и func_recharge entity. Незнаю как отловить нажатие игрока на клавишу использовать (по умолчанию "Е") в момент зарядки и погасить эту аптечку. Может вы подобное видели в моде OZ. Только мод подаеться в dll-ке и исходный код не посмотреть. Хочеться такое реализовать. Спасибо.
 
PAHANCSДата: Четверг, 28.05.2009, 02:05:27 | Сообщение # 2
Полковник
Группа: Пользователи
Сообщений: 183
Репутация: 4
Статус: Не в сети
Quote (Vladimirok)
погасить эту аптечку

Вообще удалить или опусташить ?


PAHANCS
 
VladimirokДата: Четверг, 28.05.2009, 02:20:31 | Сообщение # 3
Лейтенант
Группа: Пользователи
Сообщений: 73
Репутация: 0
Статус: Не в сети
Опустошить. Игрок подбегает к аптечке, использует и ему сразу например +50hp и аптечка пустая. Спасибо.
 
PAHANCSДата: Четверг, 28.05.2009, 02:28:32 | Сообщение # 4
Полковник
Группа: Пользователи
Сообщений: 183
Репутация: 4
Статус: Не в сети
Вот какраз те моменты :

Code

#include amxmodx
#include hamsandwich

public plugin_init() {
RegisterHam(Ham_Use, "func_healthcharger", "healthcharger_use")
RegisterHam(Ham_Use, "func_recharge", "recharge_use")
register_plugin("No Health End Armor Changer", "PahanCS", "1.0")
}

public healthcharger_use(this, idcaller, idactivator, use_type, Float:value) {
server_print("{[healthcharger_use] this: %i || idactivator: %i }",this,idactivator)
return HAM_IGNORED
}

public recharge_use(this, idcaller, idactivator, use_type, Float:value) {
server_print("{[recharge_use] this: %i || idactivator: %i }",this,idactivator)
return HAM_IGNORED
}

Добавлено (2009-05-28, 2:28 Am)
---------------------------------------------
Ток проблема в том, что два случая происходит за одно нажатие (+use и -use)


PAHANCS

Сообщение отредактировал PAHANCS - Четверг, 28.05.2009, 04:49:47
 
VladimirokДата: Четверг, 28.05.2009, 02:39:00 | Сообщение # 5
Лейтенант
Группа: Пользователи
Сообщений: 73
Репутация: 0
Статус: Не в сети
Большое спасибо! Как путушить опустушить аптечку, что нужно в pev(..) записать? Параметров незнаю :(
 
PAHANCSДата: Четверг, 28.05.2009, 03:10:41 | Сообщение # 6
Полковник
Группа: Пользователи
Сообщений: 183
Репутация: 4
Статус: Не в сети
Сейчас что нибуть попробую

Добавлено (2009-05-28, 3:10 Am)
---------------------------------------------
Просто заблокировать легче:

Code

#include amxmodx   
#include hamsandwich   

public plugin_init() {   
RegisterHam(Ham_Use, "func_healthcharger", "healthcharger_use")   
RegisterHam(Ham_Use, "func_recharge", "recharge_use")   
register_plugin("No Health End Armor Changer", "PahanCS", "1.0")   
}   

public healthcharger_use(this, idcaller, idactivator, use_type, Float:value) {   
return HAM_SUPERCEDE
}   

public recharge_use(this, idcaller, idactivator, use_type, Float:value) {   
return HAM_SUPERCEDE
}



PAHANCS

Сообщение отредактировал PAHANCS - Четверг, 28.05.2009, 05:03:35
 
VladimirokДата: Четверг, 28.05.2009, 03:29:14 | Сообщение # 7
Лейтенант
Группа: Пользователи
Сообщений: 73
Репутация: 0
Статус: Не в сети
Что за тип данных такой Edict?

Вот что нарыл, сейчас перебераю все значения:

// pev types
// based on engine_const.inc enums

/* Int */
gamestate
oldbuttons
groupinfo
iuser1
iuser2
iuser3
iuser4
weaponanim
pushmsec
bInDuck
flTimeStepSound
flSwimTime
flDuckTime
i StepLeft
movetype
solid
skin
body
effects
light_level
sequence
gaitsequence
modelindex
playerclass
waterlevel
watertype
spawnfl ags
flags
colormap
team
fixangle
weapons
rendermode
renderfx
button
impulse
deadflag

/* Float */
impacttime
starttime
idealpitch
pitch_speed
ideal_yaw
yaw_speed
ltime
nextthink
gravity
friction
frame
animtime
framerate
hea lth
frags
takedamage
max_health
teleport_time
armortype
armorvalue
dmg_take
dmg_save
dmg
dmgtime
speed
air_finished
pain_finish ed
radsuit_finished
scale
renderamt
maxspeed
fov
flFallVelocity
fuser1
fuser2
fuser3
fuser4

/* Vector */
origin
oldorigin
velocity
basevelocity
clbasevelocity
movedir
angles
avelocity
punchangle
v_angle
endpos
startpos
absmin
absm ax
mins
maxs
size
rendercolor
view_ofs
vuser1
vuser2
vuser3
vuser4

/* Edict */
chain
dmg_inflictor
enemy
aiment
owner
groundentity
pContainingEntity
euser1
euser2
euser3
euser4

/* String */
classname
globalname
model
target
targetname
netname
message
noise
noise1
noise2
noise3
viewmodel
weaponmodel

/* Byte */
controller1
controller2
controller3
controller4
blending1
blending2

Из типа Integer ничего не изменилось

Сообщение отредактировал Vladimirok - Четверг, 28.05.2009, 03:32:27
 
PAHANCSДата: Четверг, 28.05.2009, 03:47:55 | Сообщение # 8
Полковник
Группа: Пользователи
Сообщений: 183
Репутация: 4
Статус: Не в сети
Помоему их смотреть не надо, они используются для pev_* ( пример: set_pev(id, pev_health, float(100) )

Файл fakemeta_const.inc

Code


enum {
     pev_string_start = 0,
     pev_classname,
     pev_globalname,
     pev_model,
     pev_target,
     pev_targetname,
     pev_netname,
     pev_message,
     p ev_noise ,
     pev _noise1,
     p ev_noise2,
     pev_noise3,
     pev_string_end,
     pev_edict_start,
     pev_chain,
     pev_dmg_inflictor,
     pev_enemy,
     pev_aime nt,
     p ev_own er,
     pe v_groundentity,
     pev_euser1,
     pev_euser2,
     pev_euser3,
     pev_euser4,
     pev_edict_end,
     pev_float_start,
     pev_impac ttime,
     p ev_ starttim e,
     pev_idealpitch,
     pev_ideal_yaw,
     pev_pitch_speed,
     pev_yaw_speed,
     pev_ltime,
     pev_nextthink,
     pev_gravity,
     p ev _frictio n,
     pev _frame,
     pev_animtime,
     pev_framerate,
     pev_scale,
     pev_renderamt,
     pev_health,
     pev_frags,
     pev_takedamage,
     p ev_ma x_health ,
     pev_ teleport_time,
     pev_armortype,
     pev_armorvalue,
     pev_dmg_take,
     pev_dmg_save,
     pev_dmg,
     pev_dmgtime,
     pev_speed ,
     p ev_air_f inished,     
     pev_pain_finished,
     pev_radsuit_finished,
     pev_maxspeed,
     pev_fov,
     pev_flFallVelocity,
     pev_fuser1,
     p ev_ fuser2,
     p ev_fuser3,
     p ev_fuser4,
     pev_float_end,
     pev_int_start,
     pev_fixangle,
     pev_modelindex,
     pev_viewmodel,
     pev_weaponmodel,
     pe v_movet ype,
     p ev_sol id,
     pev_skin,
     pev_body,
     pev_effects,
     pev_light_level,
     pev_sequence,
     pev_gaitsequence,
     pev_rendermode,
     p ev_re nderfx,
     p ev_we apons,
     pev_deadflag,
     pev_button,
     pev_impulse,
     pev_spawnflags,
     pev_flags,
     pev_colormap,
     pev_team,
     pev _waterle vel,
     p ev_water type,
     pev_playerclass,
     pev_weaponanim,
     pev_pushmsec,
     pev_bInDuck,
     pev_flTimeStepSound,
     pev_flSwimTime,
     pe v_flDuc kTime,
     p ev_i StepLeft,
     pev_gamestate,
     pev_oldbuttons,
     pev_groupinfo,
     pev_iuser1,
     pev_iuser2,
     pev_iuser3,
     pev_iuser4,
     p ev_ int_end,    
     pev_b yte_start,
     pev_controller_0,
     pev_controller_1,
     pev_controller_2,
     pev_controller_3,
     pev_blending_0,
     pev_blendin g_1,
     p ev_ byte_en d,
     pev_bytearray_start,
     pev_controller,
     pev_blending,
     pev_bytearray_end,
     pev_vecarray_start,
     pev_origin,
     p ev_old origin,    
     pev_ velocity,
     pev_basevelocity,
     pev_clbasevelocity,
     pev_movedir,
     pev_angles,
     pev_avelocity,
     pev_v_angle,
     pev_ endpos,   
     pev _startpo s,
     pev_absmin,
     pev_absmax,
     pev_mins,
     pev_maxs,
     pev_size,
     pev_rendercolor,
     pev_view_ofs,
     pev_vuser1,
     p ev_ vuser2,
     p ev_vuse r3,
     pev_vuser4,
     pev_punchangle,
     pev_vecarray_end,
     pev_string2_begin,    /* anything after here are string corrections */
     pev_weaponmodel2,
     pev_viewmodel2,
     pev_string2_end,
     pev_edict2_start,    /* edict corrections */
     pev_pContainingEntity,
     pev_absolute_end
};

Точно незнаю.

Добавлено (2009-05-28, 3:47 Am)
---------------------------------------------
Ошибся.

Файл engine.inc

/* Sets/gets things in an entities Entvars Struct. */
native entity_get_int(iIndex, iKey);
native entity_set_int(iIndex, iKey, iVal);
native Float:entity_get_float(iIndex, iKey);
native entity_set_float(iIndex, iKey, Float:iVal);
native entity_get_vector(iIndex, iKey, Float:vRetVector[3]);
native entity_set_vector(iIndex, iKey, const Float:vNewVector[3]);
native entity_get_edict(iIndex, iKey);
native entity_set_edict(iIndex, iKey, iNewIndex);
native entity_get_string(iIndex, iKey, szReturn[], iRetLen);
native entity_set_string(iIndex, iKey, const szNewVal[]);
native entity_get_byte(iIndex, iKey);
native entity_set_byte(iIndex, iKey, iVal);

Пример: entity_set_float(id, EV_FL_health, float(100))

Файл engine_const.inc

Code


/* Int */
enum {
   EV_INT_gamestate = 0,
   EV_INT_oldbuttons,
   EV_INT_groupinfo,
   EV_INT_iuser1,
   EV_INT_iuser2,
   EV_INT_iuser3,
   EV_INT_iuser4,
   EV_INT_weaponanim,
   E V_IN T_pushmsec,
   EV_INT_bInDuck,
   EV_INT_flTimeStepSound,
   EV_INT_flSwimTime,
   EV_INT_flDuckTime,
   EV_INT_iStepLeft,
   EV_INT_movetyp e,
   E V_INT_solid,
   EV_INT_skin,
   EV_INT_body,
   EV_INT_effects,
   EV_INT_light_level,
   EV_INT_sequence,
   EV_INT_gaitsequence,
   EV_INT _modeli ndex,
   EV_INT_playerclass,
   EV_INT_waterlevel,
   EV_INT_watertype,
   EV_INT_spawnflags,
   EV_INT_flags,
   EV_INT_colormap,
   EV_INT _team,
   E V_INT_fixangle,
   EV_INT_weapons,
   EV_INT_rendermode,
   EV_INT_renderfx,
   EV_INT_button,
   EV_INT_impulse,
   EV_INT_deadflag,
};

/* Float */
enum {
   EV_FL_impacttime = 0,
   EV_FL_starttime,
   EV_FL_idealpitch,
   EV_FL_pitch_speed,
   EV_FL_ideal_yaw,
   EV_FL_yaw_speed,
   EV_FL_ltime,
   EV_FL_nextthink ,
   EV_ FL_gravity,
   EV_FL_friction,
   EV_FL_frame,
   EV_FL_animtime,
   EV_FL_framerate,
   EV_FL_health,
   EV_FL_frags,
   EV_FL_takedamage,
   E V_FL _max_health,
   EV_FL_teleport_time,
   EV_FL_armortype,
   EV_FL_armorvalue,
   EV_FL_dmg_take,
   EV_FL_dmg_save,
   EV_FL_dmg,
   EV_FL_d mgtime,   
   EV_FL_speed,
   EV_FL_air_finished,
   EV_FL_pain_finished,
   EV_FL_radsuit_finished,
   EV_FL_scale,
   EV_FL_renderamt,
   E V_FL_maxspeed,
   E V_FL_fov,
   EV_FL_flFallVelocity,
   EV_FL_fuser1,
   EV_FL_fuser2,
   EV_FL_fuser3,
   EV_FL_fuser4,
};

/* Vector */
enum {
   EV_VEC_origin = 0,
   EV_VEC_oldorigin,
   EV_VEC_velocity,
   EV_VEC_basevelocity,
   EV_VEC_clbasevelocity,
   EV_VEC_movedir,
   EV_VEC_angles,
   EV_VEC _aveloc ity,
   EV_VEC_punchangle,
   EV_VEC_v_angle,
   EV_VEC_endpos,
   EV_VEC_startpos,
   EV_VEC_absmin,
   EV_VEC_absmax,
   EV_VEC_mins,
   E V_VEC_ma xs,
   EV_VEC_size,
   EV_VEC_rendercolor,
   EV_VEC_view_ofs,
   EV_VEC_vuser1,
   EV_VEC_vuser2,
   EV_VEC_vuser3,
   EV_VEC_vuser4,
};

/* Edict */
enum {
   EV_ENT_chain = 0,
   EV_ENT_dmg_inflictor,
   EV_ENT_enemy,
   EV_ENT_aiment,
   EV_ENT_owner,
   EV_ENT_groundentity,
   EV_ENT_pContainingEntity,
   EV_E NT_euse r1,
   EV_ENT_euser2,
   EV_ENT_euser3,
   EV_ENT_euser4,
};

/* String */
enum {
   EV_SZ_classname = 0,
   EV_SZ_globalname,
   EV_SZ_model,
   EV_SZ_target,
   EV_SZ_targetname,
   EV_SZ_netname,
   EV_SZ_message,
   EV_SZ_noise,
   EV_SZ_n oise1,
   E V_SZ_noise2,
   EV_SZ_noise3,
   EV_SZ_viewmodel,
   EV_SZ_weaponmodel,
};

/* Byte */
enum {
   EV_BYTE_controller1 = 0,
   EV_BYTE_controller2,
   EV_BYTE_controller3,
   EV_BYTE_controller4,
   EV_BYTE_blending1,
   EV_BYTE_blending2,
};



PAHANCS

Сообщение отредактировал PAHANCS - Четверг, 28.05.2009, 04:22:10
 
VladimirokДата: Четверг, 28.05.2009, 04:14:00 | Сообщение # 9
Лейтенант
Группа: Пользователи
Сообщений: 73
Репутация: 0
Статус: Не в сети
Где же это значение прячеться...

Добавлено (2009-05-28, 4:14 Am)
---------------------------------------------
Это из официального сайта Valve, только на C++

Code
//-------------------------------------------------------------
// Wall mounted health kit
//-------------------------------------------------------------
class CWallHealth : public CBaseToggle
{
public:
void Spawn( );
void Precache( void );
void EXPORT Off(void);
void EXPORT Recharge(void);
void KeyValue( KeyValueData *pkvd );
void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
virtual int    ObjectCaps( void ) { return (CBaseToggle :: ObjectCaps() | FCAP_CONTINUOUS_USE) & ~FCAP_ACROSS_TRANSITION; }
virtual int  Save( CSave &save );
virtual int  Restore( CRestore &restore );

static    TYPEDESCRIPTION m_SaveData[];

float m_flNextCharge;
int  m_iReactivate ; // DeathMatch Delay until reactvated
int  m_iJuice;
int  m_iOn;   // 0 = off, 1 = startup, 2 = going
float m_flSoundTime;
};

TYPEDESCRIPTION CWallHealth::m_SaveData[] =
{
DEFINE_FIELD( CWallHealth, m_flNextCharge, FIELD_TIME),
DEFINE_FIELD( CWallHealth, m_iReactivate, FIELD_INTEGER),
DEFINE_FIELD( CWallHealth, m_iJuice, FIELD_INTEGER),
DEFINE_FIELD( CWallHealth, m_iOn, FIELD_INTEGER),
DEFINE_FIELD( CWallHealth, m_flSoundTime, FIELD_TIME),
};

IMPLEMENT_SAVERESTORE( CWallHealth, CBaseEntity );

LINK_ENTITY_TO_CLASS(func_healthcharger, CWallHealth);

void CWallHealth::KeyValue( KeyValueData *pkvd )
{
if (    FStrEq(pkvd->szKeyName, "style") ||
FStrEq(pkvd->szKeyName, "height") ||
FStrEq(pkvd->szKeyName, "value1") ||
FStrEq(pkvd->szKeyName, "value2") ||
FStrEq(pkvd->szKeyName, "value3"))
{
pkvd->fHandled = TRUE;
}
else if (FStrEq(pkvd->szKeyName, "dmdelay"))
{
m_iReactivate = atoi(pkvd->szValue);
pkvd->fHandled = TRUE;
}
else
CBaseToggle::KeyValue( pkvd );
}

void CWallHealth::Spawn()
{
Precache( );

pev->solid  = SOLID_BSP;
pev->movetype    = MOVETYPE_PUSH;

UTIL_SetOrigin(pev, pev->origin);  // set size and link into world
UTIL_SetSize(pev, pev->mins, pev->maxs);
SET_MODEL(ENT(pev), STRING(pev->model) );
m_iJuice = static_cast<int>(gSkillData.healthchargerCapacity);
pev->frame = 0;

}

void CWallHealth::Precache()
{
PRECACHE_SOUND("items/medshot4.wav");
PRECACHE_SOUND("items/medshotno1.wav");
PRECACHE_SOUND("items/medcharge4.wav");
}

void CWallHealth::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
{
// Make sure that we have a caller
if (!pActivator)
return;
// if it's not a player, ignore
if ( !pActivator->IsPlayer() )
return;

// if there is no juice left, turn it off
if (m_iJuice <= 0)
{
pev->frame = 1;
Off();
}

// if the player doesn't have the suit, or there is no juice left, make the deny noise
if ((m_iJuice <= 0) || (!(pActivator->pev->weapons & (1<<WEAPON_SUIT))))
{
if (m_flSoundTime <= gpGlobals->time)
{
m_flSoundTime = gpGlobals->time + 0.62;
EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/medshotno1.wav", 1.0, ATTN_NORM );
}
return;
}

pev->nextthink = pev->ltime + 0.25;
SetThink(&CWallHealth::Off);

// Time to recharge yet?

if (m_flNextCharge >= gpGlobals->time)
return;

// Play the on sound or the looping charging sound
if (!m_iOn)
{
m_iOn++;
EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/medshot4.wav", 1.0, ATTN_NORM );
m_flSoundTime = 0.56 + gpGlobals->time;
}
if ((m_iOn == 1) && (m_flSoundTime <= gpGlobals->time))
{
m_iOn++;
EMIT_SOUND(ENT(pev), CHAN_STATIC, "items/medcharge4.wav", 1.0, ATTN_NORM );
}

// charge the player
if ( pActivator->TakeHealth( 1, DMG_GENERIC ) )
{
m_iJuice--;
}

// govern the rate of charge
m_flNextCharge = gpGlobals->time + 0.1;
}

void CWallHealth::Recharge(void)
{
EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/medshot4.wav", 1.0, ATTN_NORM );
m_iJuice = static_cast<int>(gSkillData.healthchargerCapacity);
pev->frame = 0;
SetThink( &CBaseEntity::SUB_DoNothing );
}

void CWallHealth::Off(void)
{
// Stop looping sound.
if (m_iOn > 1)
STOP_SOUND( ENT(pev), CHAN_STATIC, "items/medcharge4.wav" );

m_iOn = 0;

if ((!m_iJuice) && ( ( m_iReactivate = static_cast<int>(g_pGameRules->FlHealthChargerRechargeTime()) ) > 0) )
{
pev->nextthink = pev->ltime + m_iReactivate;
SetThink(&CWallHealth::Recharge);
}
else
SetThink( &CBaseEntity::SUB_DoNothing );
}


Сообщение отредактировал Vladimirok - Четверг, 28.05.2009, 04:14:24
 
PAHANCSДата: Четверг, 28.05.2009, 04:29:07 | Сообщение # 10
Полковник
Группа: Пользователи
Сообщений: 183
Репутация: 4
Статус: Не в сети
Quote (Vladimirok)
Где же это значение прячеться...

Наверно в hl.dll, из HL1SDK

Добавлено (2009-05-28, 4:29 Am)
---------------------------------------------
Да, посмотрел, файлы

healthkit.cpp
h_battery.cpp


PAHANCS
 
VladimirokДата: Четверг, 28.05.2009, 04:42:14 | Сообщение # 11
Лейтенант
Группа: Пользователи
Сообщений: 73
Репутация: 0
Статус: Не в сети
Гугл не дал результатв :(, буду ждать, может кто то знает...
 
PAHANCSДата: Четверг, 28.05.2009, 04:46:09 | Сообщение # 12
Полковник
Группа: Пользователи
Сообщений: 183
Репутация: 4
Статус: Не в сети
Непойму, тебе что именно надо ?

PAHANCS
 
VladimirokДата: Четверг, 28.05.2009, 05:08:53 | Сообщение # 13
Лейтенант
Группа: Пользователи
Сообщений: 73
Репутация: 0
Статус: Не в сети
Нада опустошить аптечку, что бы она погасла, выключить ее, ну незнаю еще как выразиться. Так как будто все запасы закончелиль.
 
PomanoBДата: Четверг, 28.05.2009, 16:35:01 | Сообщение # 14
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Попробуй pev_frame в 1 поставить

http://romanov4400.mybrute.com
 
slogicДата: Четверг, 28.05.2009, 20:24:00 | Сообщение # 15
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
pev_frame = 1 сделает лишь визуально изменения. Надо еще захукать Ham_Use для func_healthcharger и обнулять активатора, когда pev_frame = 1. Можно попробовать сделать объект несолдиным, может ничего не упадет :) Вообще тут вариантов куча, когда нельзя напрямую получиь доступ к m_iJuice. Еще дикий пример, в Ham_Use выставляете глобальный флаг, что игрок не игрок, а в Ham_IsPlayer используете этот флаг, и там же сбрасываете. Если флаг установлен, то Ham_IsPlayer веренет false, т.о. Use зарядки обломится (смотите исходный код void CRecharge::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ) и принимайте решение, как его обмануть). с HS у вас супер неограниченные возможности. Раньше чтобы это сделать надо было обосраться мягко говоря.
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Half-Life, func_healthcharger, func_recharge (Кто знает помогите или подскажите)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

AMX Mod X Russian Community © 2006-2024