HNS Block Return 0.1

В този раздел можете да публикувате нови плъгини, като същите ще бъдат одобрени или неодобрени от страна на екипа.
Правила на форума
ИНФОРМАЦИЯ: В този раздел най-вероятно няма да намерите много теми (възможно е и да е напълно празен), тъй като новите теми се местят в https://amxx-bg.info/viewforum.php?f=21 или https://amxx-bg.info/viewforum.php?f=22, зависимо от качеството им.
Отговори
Потребителски аватар

Автор на темата
Misz
Потребител
Потребител
Мнения: 12
Регистриран: 06 апр 2017, 10:00
Се отблагодари: 10 пъти

HNS Block Return 0.1

Мнение от Misz » 06 апр 2017, 10:38

Автор: Garey

Описание:
  • Плъгин, създаден за Hide'N'Seek модове.
  • Олекотен до максимално по моите възможности.
  • Не позволява Т играч да блокира CT играч, ако CT играчът е поел повече от 49 damage след блока.
Какво всъщност прави плъгинът?
  • Ако CT играчът е скочил върху T играч и е поел повече от 49 damage, той бива върнат на мястото от което е скочил по интересен начин.

ВАЖНА ИНФОРМАЦИЯ:
  • Текущият плъгин създава проблеми под ReHLDS платформи.
Changelog:
  • Версия 0.1 - Основа и създаване.
Бъдещи промени:
  • Добавяне на cvar и звук за контролиране на поетият damage и на звука.
  • Очакам предложения
Начин на инсталация:
  • Файлът antiblock.sma отива в папката scripting и оттам го компилирате локално. След това го инсталирате, премествате компилирания файл в папката plugins и пишете името му в plugins.ini.
Изтегляне:
antiblock.rar
(1.48 KиБ) Свален 129 пъти
antiblock.rar
(1.48 KиБ) Свален 129 пъти
Последна промяна от Misz на 07 апр 2017, 10:43, променено общо 3 пъти.

Потребителски аватар

OciXCrom TM
Администратор
Администратор
Мнения: 5255
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 74 пъти
Получена благодарност: 539 пъти
Години: 21
Контакти:

Re: HNS Block Return 0.1

Мнение от OciXCrom TM » 06 апр 2017, 13:38

Правило №2: Забранено е качването на компилирани плъгини, тоест .amxx файлове. Когато качвате плъгин във форума, предоставяйте само .sma файла/кода и нужните ресурси. Изключение се прави при заявките, поточно когато трябва да се даде линк към друг сайт, който може да съдържа .amxx файл.**
Моля, премахни .amxx файла от архива, както и в другата ти тема.
Ти ли си правил плъгина?

Потребителски аватар

Huehue БРАТМЕЕ
Модератор
Модератор
Мнения: 228
Регистриран: 16 яну 2017, 23:42
Местоположение: София
Се отблагодари: 4 пъти
Получена благодарност: 53 пъти
Години: 22
Контакти:

Re: HNS Block Return 0.1

Мнение от Huehue БРАТМЕЕ » 06 апр 2017, 21:04

Мисля, че не се толерира тук представянето на чужд труд като твой. Плъгина е руски и го има в нета, качен от друг човек.

Код: Избери всички

/*
 *
 * HNS Block Return
 *
 * Copyright 2016 Garey <[email protected]>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301, USA.
 *
 *
 */
 
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
 
new Array:g_arFlPlayerOrigin[33]
new Array:g_arFlPlayerAngle[33]
new bool:g_bIsTouched[33];
new bool:g_bIsBlocked[33];
new iToucher[33];
new g_iMaxPlayers;
new cvarFX;
 
public plugin_precache()
{
    precache_sound("ambience/rewind.wav")
}
 
public plugin_init()
{
    register_plugin("Block Return", "0.1", "Garey");
 
    cvarFX = register_cvar("hns_block_fx", "1");
 
    g_iMaxPlayers = get_maxplayers();
 
    for(new i = 1; i <= g_iMaxPlayers; i++)
    {
        g_arFlPlayerOrigin[i] = ArrayCreate(3);
        g_arFlPlayerAngle[i] = ArrayCreate(3);
    }
 
    RegisterHam( Ham_Player_PreThink, "player", "fwd_PlayerPreThink", 0 );
    RegisterHam( Ham_Touch, "player", "fwd_TouchPlayer", 0 );
    RegisterHam( Ham_TakeDamage, "player", "Ham_TakeDamagePlayer" );
}
 
public fwd_TouchPlayer( id, entity )
{
    if( get_user_team( id ) != 2 || !is_user_alive( entity ))
        return;
 
    if( get_user_team( entity ) != 1 )
        return;
 
    new flVelocity[3]
    pev(id, pev_velocity, flVelocity);
    // Check if player was in Air
    if(flVelocity[2] != 0.0)
    {
        g_bIsTouched[id] = true;
        iToucher[id] = entity;
    }
}
 
 
public Ham_TakeDamagePlayer(iVictim, iInflictor, iAttacker, Float:flDamage, iDamageBits)
{
    if( is_user_alive(iVictim) && flDamage >= 50.0 && iDamageBits & DMG_FALL )
    {
        if( get_user_team(iVictim) == 2 )
        {
            if(g_bIsTouched[iVictim] && is_user_alive(iToucher[iVictim]))
            {
                iToucher[iVictim] = 0;
                g_bIsBlocked[iVictim] = true;
                if(get_pcvar_num(cvarFX))
                emit_sound(iVictim, CHAN_AUTO, "ambience/rewind.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
                set_pev(iVictim, pev_movetype, MOVETYPE_NOCLIP)
                return HAM_SUPERCEDE;
            }
        }
    }
    return HAM_IGNORED;
}
 
public fwd_PlayerPreThink( id )
{
    static flPlayerOrigin[3], flPlayerAngles[3], LastFrames[33]
 
    if(is_user_alive(id))
    {
        if(!g_bIsBlocked[id])
        {
            pev(id, pev_origin, flPlayerOrigin);
            pev(id, pev_v_angle, flPlayerAngles);
 
            if((pev(id, pev_flags) & FL_ONGROUND) || pev(id, pev_movetype) == MOVETYPE_FLY)
            {
                if(LastFrames[id] > 10)
                {
                    g_bIsTouched[id] = false;
                    ArrayClear(g_arFlPlayerOrigin[id]);
                    ArrayClear(g_arFlPlayerAngle[id]);
                    LastFrames[id] = 0;
                }
                else
                {
                    ArrayPushArray(g_arFlPlayerOrigin[id], flPlayerOrigin);
                    ArrayPushArray(g_arFlPlayerAngle[id], flPlayerAngles);
                    LastFrames[id]++;
                }
            }
            else
            {
                ArrayPushArray(g_arFlPlayerOrigin[id], flPlayerOrigin);
                ArrayPushArray(g_arFlPlayerAngle[id], flPlayerAngles);
            }
        }
        else
        {
            new Length = ArraySize(g_arFlPlayerOrigin[id])-1;
 
            if(Length)
            {
                ArrayGetArray(g_arFlPlayerOrigin[id], Length, flPlayerOrigin);
                ArrayGetArray(g_arFlPlayerAngle[id], Length, flPlayerAngles);
 
                ArrayDeleteItem(g_arFlPlayerOrigin[id], Length);
                ArrayDeleteItem(g_arFlPlayerAngle[id], Length);
 
                set_pev(id, pev_origin, flPlayerOrigin)
                set_pev(id, pev_angles, flPlayerAngles)
                set_pev(id, pev_fixangle, 1)
            }
            else
            {
                set_pev(id,pev_movetype,MOVETYPE_WALK)
                set_pev(id,pev_velocity,Float:{0.0,0.0,0.0})
                set_pev(id,pev_flags,pev(id,pev_flags)|FL_DUCKING)
                g_bIsBlocked[id] = false;
            }
        }
    }
    else
    {
        LastFrames[id] = 0;
    }
} 
LOYAL TO THE OATH OF OMERTА̀

Зад монитора мъжкари, това не го разбирам..
На живо сте мишкари, това го гарантирам!
Седиш на 30 метра от мен като препариран!
Ако има нещо брат, номерът ми е блокиран..

Отговори

Върни се в “Нови попълнения”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 1 гост