Remember Weaponstate

Remember Weaponstate 1.0.0

Нет прав для скачивания

ufame

Скриптер
Проверенный
Сообщения
19
Реакции
7
Баллы
3
ufame добавил(а) новый ресурс:

Remember Weaponstate - Запоминает режимы оружия у usp, m4a1, famas и glock18.

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

Узнать больше об этом ресурсе...
 
What is this verification for?
pawn:
 #if AMXX_VERSION_NUM < 200
    register_plugin(PluginName, PluginVersion, PluginAuthor);
  #endif
 
C-подобный:
#include <amxmodx>
#include <hamsandwich>
#include <reapi>

public stock const PluginName[]    = "[Gameplay] Weaponstate remember";
public stock const PluginVersion[] = "1.1.0";
public stock const PluginAuthor[]  = "ufame / improved";

new WeaponState:g_iWeaponState[MAX_PLAYERS + 1][WeaponIdType];

public plugin_init()
{
#if AMXX_VERSION_NUM < 200
    register_plugin(PluginName, PluginVersion, PluginAuthor);
#endif

    static const szWeaponList[][] =
    {
        "weapon_m4a1",
        "weapon_usp",
        "weapon_famas",
        "weapon_glock18"
    };

    for (new i = 0; i < sizeof szWeaponList; i++)
    {
        RegisterHam(Ham_Item_AddToPlayer, szWeaponList[i], "OnItemAddToPlayerPost", true);
        RegisterHam(Ham_Weapon_SecondaryAttack, szWeaponList[i], "OnWeaponSecondaryAttackPost", true);
    }
}

public client_disconnected(id)
{
    if (!IsPlayer(id))
        return;

    ClearPlayerWeaponStates(id);
}

public OnWeaponSecondaryAttackPost(const weapon)
{
    if (is_nullent(weapon))
        return HAM_IGNORED;

    new player = get_member(weapon, m_pPlayer);

    if (!IsPlayer(player))
        return HAM_IGNORED;

    new WeaponIdType:weaponId = get_member(weapon, m_iId);

    if (!IsValidWeaponId(weaponId))
        return HAM_IGNORED;

    g_iWeaponState[player][weaponId] = get_member(weapon, m_Weapon_iWeaponState);

    return HAM_IGNORED;
}

public OnItemAddToPlayerPost(const weapon, const player)
{
    if (is_nullent(weapon))
        return HAM_IGNORED;

    if (!IsPlayer(player))
        return HAM_IGNORED;

    new WeaponIdType:weaponId = get_member(weapon, m_iId);

    if (!IsValidWeaponId(weaponId))
        return HAM_IGNORED;

    set_member(weapon, m_Weapon_iWeaponState, g_iWeaponState[player][weaponId]);

    return HAM_IGNORED;
}

stock ClearPlayerWeaponStates(const player)
{
    arrayset(_:g_iWeaponState[player], 0, sizeof g_iWeaponState[]);
}

stock bool:IsPlayer(const index)
{
    return (1 <= index <= MaxClients);
}

stock bool:IsValidWeaponId(const WeaponIdType:weaponId)
{
    return (WEAPON_NONE < weaponId < WeaponIdType);
}
Сообщение автоматически объединено:

Разве это не было бы правильнее?
 
а что тут было изменено настолько, чтобы вписывать себя в авторы?
Вы правы. Извините. Я не могу это отредактировать. Удалите мой ненужный спам. И автору, пожалуйста, ответьте, верны ли мои проверки кода.
 
сколько помню ни разу не проверял в HAM хуках проверки на валидность как оружия так и игрока. Просто интересно для себя, бывают ли случаи когда можно получить ошибку без этих проверок?
 
сколько помню ни разу не проверял в HAM хуках проверки на валидность как оружия так и игрока. Просто интересно для себя, бывают ли случаи когда можно получить ошибку без этих проверок?
Проверки тут не нужны, это наследие оригинального кода.
 
Да, автор прав. Оригинальный, старый код всегда работал корректно. Однако в новой версии сохранение сбрасывается не после команды "RECONNECT", а после сброса карты.
 

Кто просматривает тему

Назад
Верх