SetHookChainArg() и векторы

Статус
В этой теме нельзя размещать новые ответы.

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
Приветствую.
У меня такой вопрос: как установить значение аргумента когда параметр колбэка это вектор?

К примеру:
Код:
new Float:vThrow[3]

RegisterHookChain( RG_CBasePlayer_ThrowGrenade, "CBasePlayer_ThrowGrenade_Pre", false )

public CBasePlayer_ThrowGrenade_Pre(const this, const grenade, Float:vecSrc[3], Float:vecThrow[3], Float:time, const usEvent)
{
    SetHookChainArg( 4, ... )
}
Если сделать так:
SetHookChainArg( 4, ATYPE_INTEGER, vThrow )
такие действия сразу крашат сервер.

Почему ATYPE_INTEGER?
А потому, что сначала поставил ATYPE_FLOAT и получил ошибку: expected 'ATYPE_INTEGER'; got 'ATYPE_FLOAT'

Посмотрев на все доступные типы кажется, что не хватает какого нибудь ATYPE_VECTOR.
Код:
/**
* Hookchain argument types
*/
enum AType
{
    ATYPE_INTEGER = 0,
    ATYPE_FLOAT,
    ATYPE_STRING,
    ATYPE_CLASSPTR,
    ATYPE_EDICT,
    ATYPE_EVARS,
    ATYPE_BOOL
};
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Никак. Позже будет.
 
  • Super
Реакции: Ayk

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
Понятно.
Вот огорчает меня текущая эволюция в разработке всего связанного с игрой (RE продуктов, AMXX-a, GSClient-a). Стагнация, местами лютая. Жалко видеть увядание игры детства. Не понимаю почему занятые разрабы не отдают разработку тем кто активен и заинтересован в продолжении активного развития.
Тут оказывается вопрос уже поднимался, полтора года назад: https://dev-cs.ru/threads/4736/
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
Можешь кое-что попробовать?
new Float:asd[3] = {0.0, 1.0, 10.0};
_:a, any: a, INTEGER.
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Не понимаю почему занятые разрабы не отдают разработку тем кто активен и заинтересован в продолжении активного развития.
Почему же не отдают. Есть пул реквесты. Но нужно понимать что для подавляющего большинства это всего лишь хобби. Соответственно те же пул реквесты не сразу принимаются, а по мере свободного времени. Я вот сделал хук для weaponbox-а и также уперся в отсутствие вектора. И, как и многие другие, у меня сейчас критически нехватка времени сделать адекватно пул реквест. Даже без тех самых векторов, на реализацию которых знаний у меня пока что не хватает. Я это веду к тому, что разработка как бы идет, хотя и не такими темпами как раньше. И не стоит забывать, что даже то, что есть уже сейчас уже намного лучше и открыло двери для больше возможностей, чем это было раньше.
 
Сообщения
28
Реакции
183
Помог
1 раз(а)
Ayk, В хукчейнах все векторы передаются по ссылке, так что можно работать напрямую

Код:
public CBasePlayer_ThrowGrenade_Pre(const this, const grenade, Float:vecSrc[3], Float:vecThrow[3], Float:time, const usEvent)
{
    new Float:vecAngle[3], Float:vecForward[3];
    get_entvar(this, var_angles, vecAngle);
    angle_vector(vecAngle, ANGLEVECTOR_FORWARD, vecForward);

    vecSrc[0] += vecForward[0] * 145.0;
    vecSrc[1] += vecForward[1] * 145.0;
    vecSrc[2] += vecForward[2] * 145.0;
}
 

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
s1lent, спасибо за информацию! Проверил, работает.
Надеюсь в скором времени появится и ATYPE_VECTOR.

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

fantom, ты прав, сейчас намного лучше чем было до RE. Но я и не говорю что всё плохо, а то что может быть ещё лучше.
На эту тему могу много написать, но т.к. это почти оффтоп ограничусь только одним примером: stable AMXX всё еще 1.8.2, релиз 2013-го года, 7 лет уже! И уже 2 года держат 1.9.0 в dev-e, но проблем у него гораздо меньше чем у 1.8.2 (что логично, ибо эта версия это результат фиксов). ПР-ы висят годами, последний коммит был 7 месяцев назад. Ну и т.д. и т.п.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу