- Регистрация
- 5 Май 2019
- Сообщения
- 1.041
- Симпатии
- 359
- Пол
- Мужской
Unreal Vehicle Fixer
Версия 0.2
Исправляет геймплей на картах с автомобилями! Скажи нет убийству тиммейтов!
( Например карта big_city2 или любая другая на которой есть машины! )
* Теперь нельзя убивать своих тиммейтов.
* А за убийство врагов дается фраг!!
* А так же работающая регистрация убийств заложников.
Теперь можете смело ставить на сервер карты с машинами, не боясь за то что геймплей будет сломан.
Версия 0.2
Исправляет геймплей на картах с автомобилями! Скажи нет убийству тиммейтов!
( Например карта big_city2 или любая другая на которой есть машины! )
* Теперь нельзя убивать своих тиммейтов.
* А за убийство врагов дается фраг!!
* А так же работающая регистрация убийств заложников.
Код:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <cstrike>
#define is_user_valid(%1) (1 <= %1 <= MAX_PLAYERS)
new g_pCarDriver[MAX_PLAYERS + 1]= {0,...};
new Float:g_fLastAttacked[MAX_PLAYERS + 1] = {0.0,...};
public plugin_init()
{
register_plugin("UNREAL VEHICLE FIXER", "0.2", "KARAULOV");
register_cvar("car_fixer", "0.2", FCVAR_SPONLY|FCVAR_UNLOGGED)
if (cvar_exists("mp_legacy_vehicle_block"))
{
log_amx("This plugin can be disabled, because mp_legacy_vehicle_block cvar is exists!");
}
register_forward(FM_Blocked, "fw_Blocked", false)
RegisterHam( Ham_OnControls, "func_vehicle", "FuncButtonVehicle", 1 );
}
public FuncButtonVehicle(pCar, pBlocker)
{
if (is_user_valid(pBlocker))
{
g_pCarDriver[pBlocker] = pCar;
}
}
public get_pDriver(pCar)
{
for(new i = 1; i <= MAX_PLAYERS;i++)
{
if (g_pCarDriver[i] == pCar)
return i;
}
return 0;
}
public client_disconnected(id)
{
if (task_exists(id))
remove_task(id);
}
public check_if_stuck(pStucker)
{
if (!(pev(pStucker,pev_flags) & FL_ONGROUND))
{
new Float:fCurOrg[3];
pev(pStucker,pev_origin,fCurOrg);
fCurOrg[2]+=2.0;
set_pev(pStucker,pev_origin,fCurOrg);
}
}
public fw_Blocked(pCar, pBlocker)
{
if (!is_valid_ent(pCar))
return FMRES_IGNORED;
if (!is_valid_ent(pBlocker))
return FMRES_IGNORED;
if (pev(pBlocker,pev_groundentity) == pCar)
{
new Float:v_fCarVel[3];
pev(pCar,pev_velocity,v_fCarVel)
set_pev(pBlocker, pev_velocity,v_fCarVel);
if (!(pev(pBlocker,pev_flags) & FL_ONGROUND))
{
new Float:fCurOrg[3];
pev(pBlocker,pev_origin,fCurOrg);
fCurOrg[2]+=5.0;
set_pev(pBlocker,pev_origin,fCurOrg);
}
return FMRES_SUPERCEDE;
}
if (is_user_valid(pBlocker) && !task_exists(pBlocker) && !(pev(pBlocker,pev_flags) & FL_ONGROUND))
{
set_task(0.1,"check_if_stuck",pBlocker);
}
new pDriver = get_pDriver(pCar);
new classname[32];
pev(pBlocker, pev_classname, classname,charsmax(classname));
if (!is_user_valid(pBlocker) && !equal(classname,"hostage_entity"))
return FMRES_IGNORED;
pev(pCar, pev_classname, classname,charsmax(classname));
if (!equal(classname,"func_vehicle"))
return FMRES_IGNORED;
new Float:v_fCarVel[3];
pev(pCar,pev_velocity,v_fCarVel)
new Float:fpCarSpeed;
pev(pCar, pev_speed, fpCarSpeed);
if (fpCarSpeed > 100.0 || fpCarSpeed < -100)
{
if (pDriver && pDriver != pBlocker)
{
set_pev(pCar,pev_speed,0.0);
set_pev(pCar,pev_velocity,Float:{ 0.0, 0.0, 0.0 });
set_pev(pCar,pev_avelocity,Float:{ 0.0, 0.0, 0.0 });
if (!is_user_valid(pBlocker) || cs_get_user_team(pBlocker) != cs_get_user_team(pDriver))
{
if (get_gametime() - g_fLastAttacked[pDriver] > 1.0)
{
emit_sound(pDriver, CHAN_ITEM, "weapons/knife_slash1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
ExecuteHam(Ham_TakeDamage, pBlocker, pCar, pDriver, 50.0, DMG_CRUSH);
}
g_fLastAttacked[pDriver] = get_gametime();
}
}
}
v_fCarVel[0]*=1.5;
v_fCarVel[1]*=1.5;
v_fCarVel[2] = floatclamp(floatabs(fpCarSpeed),200.0,600.0);
set_pev(pBlocker, pev_velocity,v_fCarVel);
set_pev(pBlocker, pev_gaitsequence, 6)
return FMRES_SUPERCEDE;
}
Теперь можете смело ставить на сервер карты с машинами, не боясь за то что геймплей будет сломан.
Последнее редактирование: