Получение Origin_Eyes и Origin_AimEndEyes сразу в float[3]

Сообщения
1,578
Реакции
663
Помог
5 раз(а)
C++:
new iOriginStart[3];
new iOriginEnd[3];
get_user_origin( id, iOriginStart, Origin_Eyes );
get_user_origin( id, iOriginEnd, Origin_AimEndEyes );
new Float:fOriginStart[ 3 ];
IVecFVec( iOriginStart, fOriginStart );
new Float:fOriginEnd[ 3 ];
IVecFVec( iOriginEnd, fOriginEnd );
//fOriginStart точка откуда игрок целится
//fOriginEnd точка куда игрок целится
По непанятной причине get_user_origin возвращает int а не float, хотелось бы сразу float что бы уменьшить нагрузку вызывая меньшее количество функций.

Есть ли такое в ReAPI к примеру или другом модуле?
 
Сообщения
1,578
Реакции
663
Помог
5 раз(а)
????


Типа не так

C++:
new iOriginStart[3];
new iOriginEnd[3];
get_user_origin( id, iOriginStart, Origin_Eyes );
get_user_origin( id, iOriginEnd, Origin_AimEndEyes );
new Float:fOriginStart[ 3 ];
IVecFVec( iOriginStart, fOriginStart );
new Float:fOriginEnd[ 3 ];
IVecFVec( iOriginEnd, fOriginEnd );
//fOriginStart точка откуда игрок целится
//fOriginEnd точка куда игрок целится
А так

C++:
new Float:fOriginStart[ 3 ];
new Float:fOriginEnd[ 3 ];
reapi_native_get_user_origin( id, var_eye_start, fOriginStart );
reapi_native_get_user_origin( id, var_eye_end, fOriginEnd);
//fOriginStart точка откуда игрок целится
//fOriginEnd точка куда игрок целится
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
karaulov, на приколе или как?
Тебе выше дали ответ, в fakemeta_util.inc функция fm_get_aim_origin - вернёт координаты, куда ты смотришь.
Для получения текущих координат объекта pev/get_entvar & pev_origin, var_origin для fakemeta и reapi соответственно.
Лучше бы прочитал документацию, а не выдумывал какие-то несуществующие функции.
26 Апр 2022
Реапи не может быть стопроцентной заменой всех модулей, так что пользуйся тем, что есть.
А функция get_user_origin работает быстрее, чем аналоги в fakemeta и reapi, живи теперь с этим. И это даже если брать в расчет функцию FVecIVec.
 
Последнее редактирование:
Сообщения
219
Реакции
42
А функция get_user_origin работает быстрее, чем аналоги в fakemeta и reapi, живи теперь с этим. И это даже если брать в расчет функцию FVecIVec.
How do you know it? Any tool to test natives perfomance/speed?
amxmodx profiler is very old
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
raulitop, функции pev или get_entvar делают выборку из множества значений вроде pev_ и var_ констант. А get_user_origin узкоспециализированная функция, которая просто получает координаты (несмотря на то, что в ней есть тоже небольшая выборка).
Выборка из switch сводится в к элементарным кучам if... else if...
Теперь загляни в библиотеки inc и посмотри сколько по очереди проходит этих проверок if... else if... в функции.
Это я ещё не говорю о том, что первая функция работает с int константами, что в разы быстрее, если считать вплоть до условных наносекунд. А последующий перевод из float в int затрагивает только числа до запятой и одну после неё для округления результата.
Единственное, может, я и погорячился, когда написал, что get_user_origin + FVecIVec работает быстрее, чем pev/get_entvar & pev_origin/var_origin.
27 Апр 2022
Ну и тут стоит добавить, что нужно понимать то, что это просто цифры. На деле ты никакой ощутимой разницы не увидишь.
 
Последнее редактирование:
Сообщения
333
Реакции
290
Помог
9 раз(а)
Выборка из switch сводится в к элементарным кучам if... else if...
Покажите, где это написано? Где источник этой чуши?

This will generate what's called a "case table". Rather than worm through displaced if tests, the compiler generates a table of possible values, which the virtual machine knows to browse through:
 
Последнее редактирование:
Сообщения
99
Реакции
75
Помог
1 раз(а)
C++:
new iOriginStart[3];
new iOriginEnd[3];
For some strange reason, get_user_origin returns an int and not a float
Because you declare Origin[Start/End] as an integer not float.
new Float:iOriginStart[3];
new Float:iOriginEnd[3];

The player's origin is a 3dimensional vector, why do you need these as a float?

Also, to get position of eyes, third parameter of get_user_origin should be 1 respectively 3.
 
Последнее редактирование:
Сообщения
1,578
Реакции
663
Помог
5 раз(а)
raulitop, функции pev или get_entvar делают выборку из множества значений вроде pev_ и var_ констант. А get_user_origin узкоспециализированная функция, которая просто получает координаты (несмотря на то, что в ней есть тоже небольшая выборка).
Выборка из switch сводится в к элементарным кучам if... else if...
ты сейчас полную чушь написал )))

karaulov, на приколе или как?
Тебе выше дали ответ, в fakemeta_util.inc функция fm_get_aim_origin - вернёт координаты, куда ты смотришь.
Для получения текущих координат объекта pev/get_entvar & pev_origin, var_origin для fakemeta и reapi соответственно.
Лучше бы прочитал документацию, а не выдумывал какие-то несуществующие функции.
26 Апр 2022
Реапи не может быть стопроцентной заменой всех модулей, так что пользуйся тем, что есть.
А функция get_user_origin работает быстрее, чем аналоги в fakemeta и reapi, живи теперь с этим. И это даже если брать в расчет функцию FVecIVec.
А тебе лишь бы ляпнуть и показаться умным и без какой-либо проверки? )))

По непанятной причине get_user_origin возвращает int а не float, хотелось бы сразу float что бы уменьшить нагрузку
Проверил твою fm_get_aim_origin и эта функция как я и думал, вызывается на 20% дольше чем get_user_origin + конвертация в float, а если бы get_user_origin возвращал сразу float[3], например через модуль reapi, будет еще быстрее без преобразования из int[3] в float[3] :)

А если код будет вызываться на 20% дольше, то какое это уменьшение нагрузки?
 
Последнее редактирование:
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
karaulov, я тебе еще в первом посте сказал: хватит экономить на спичках, замены - нет. Неужели не ясно? Можешь пойти сделать и прокинуть ПР на добавление натива в реапи, только вряд-ли его добавят.
 
Сообщения
19
Реакции
-5
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Nordic Warrior, толку нуль 😁до него не известно когда дойдёт это
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
Покажите, где это написано? Где источник этой чуши?
Понятно, что я утрировал и всё упростил, я просто хз как ему это написать на русском языке, чтобы потом гугл транслэйт верно суть донёс.
27 Апр 2022
А тебе лишь бы ляпнуть и показаться умным и без какой-либо проверки? )))
Я крутой.
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
karaulov, на 20% дольше от какого значения? Микросекунд? Наносекунд? Цифра красивая, но сути не отражает.
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
irrumabo_me_nomen, чел думает, что подобная макро оптимизация чём-то поможет снизить нагрузку на ЦП.
Это смешно. И это не лечится.
 
Сообщения
1,578
Реакции
663
Помог
5 раз(а)
irrumabo_me_nomen, от любого количества секунд, я же написал 20%. Это не высшая математика )
 
Сообщения
19
Реакции
-5
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
bizon, согласен с тобой биз
 

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

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