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

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

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

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

Unreal Vehicle Fixer

, Добавляет возможность использовать автомобили на максимум!
Статус пользователя karaulov
сообщение 16.3.2022, 16:52
Сообщение #1


Стаж: 15 лет

Сообщений: 1077
Благодарностей: 435
Полезность: 465

Unreal Vehicle Fixer

Версия 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;
}



Теперь можете смело ставить на сервер карты с машинами, не боясь за то что геймплей будет сломан.

Отредактировал: karaulov, - 17.3.2022, 7:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   Цитировать сообщение
Статус пользователя karaulov
сообщение 17.3.2022, 7:32
Сообщение #2


Стаж: 15 лет

Сообщений: 1077
Благодарностей: 435
Полезность: 465

Версия 0.2

* Фиксы застревания игроков в машине.
* Исправление управления машиной
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя r1nk0
сообщение 17.3.2022, 8:13
Сообщение #3


Стаж: 12 лет

Сообщений: 1417
Благодарностей: 705
Полезность: 349

Vehicle в целом работает очень криво,особенно застревания машины во всем что можно


Создание и редактирование карт ($) - vk.com/id476857873
Настройка и техническое обслуживание ваших игровых серверов - vk.com/id476857873
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя karaulov
сообщение 17.3.2022, 9:06
Сообщение #4


Стаж: 15 лет

Сообщений: 1077
Благодарностей: 435
Полезность: 465

Цитата(r1nk0 @ 17.3.2022, 9:13) *
Vehicle в целом работает очень криво,особенно застревания машины во всем что можно

Ну так это понятно но что бы исправить надо с нуля делать func_vehicle всю физику. Вроде как было что-то подобное но не помню.

Этот патч только исправляет логику убийств, ну и пару случаев застревания игроков исправил.



Отредактировал: karaulov, - 17.3.2022, 9:07
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: