Иконка ресурса

Buttons Manager 0.0.1

Нет прав для скачивания
Сообщения
432
Реакции
410
Помог
14 раз(а)
Я бы добавил отдельный форвард для регистрации unpress(или keyup), чтоб ловить одиночные нажатия.
 
  • Нравится
Реакции: Ayk
Сообщения
443
Реакции
319
Помог
13 раз(а)
Не совсем понимаю что ты имеешь ввиду. Одиночные нажатия? Модуль и так реализует лишь их, нажал - вызвалось, отжал - вызвалось. Вызывается единожды. Если ты о битсумме кнопок - можно использовать просто одиночную кнопку, например IN_USE. Если ты об RegisterPressed/RegisterUnpressed - не знаю, пока не вижу смысла в этом, последний аргумент и так передает информацию о том была ли зажата/отжата кнопка. Если ты о последнем и это действительно нужно - реализую, только напиши.
 
Последнее редактирование:
Сообщения
3,579
Реакции
1,569
Помог
137 раз(а)
Shel,
Как насчёт warapper'a для фуллпака? Было бы полезно
 
Сообщения
211
Реакции
335
Помог
3 раз(а)
Nordic Warrior, чем враппер фейкметы не устраивает?
 
Сообщения
3,579
Реакции
1,569
Помог
137 раз(а)
Xelson, ну может я чего-то не понимаю но тогда зачем данный модуль, когда в той же фейкмите есть FM_CmdStart/FM_CmdEnd?
 
Сообщения
211
Реакции
335
Помог
3 раз(а)
Nordic Warrior,
Xelson, ну может я чего-то не понимаю но тогда зачем данный модуль, когда в той же фейкмите есть FM_CmdStart/FM_CmdEnd?
Nordic Warrior, в том, что
1. Это удобней
2. Вызовы павн туда<->С++ дорого стоят.
Вот, а в случае с фуллпаком нельзя сэкономить на вызовах. Если очень смело и раскованно сказать, что обработчики кнопок — это подмножество пресинка, то подмножеств фуллпака для управления самим фуллпаком нет :) Если странно объяснил: попробуй представить себе реализацию API для такого более экономного управления фуллпаком. А ведь так нельзя: там каждый вызов информативен и нужен для полноты обработки. Фильтровать там просто нечего. Устанавливать контстантный дескриптор для игрока — зачем? Дескриптор на 90% управляется pev полями и другими свойствами. Тут единственный вариант это ограничить вызов как игрок-игрок, а не игрок-игрок или игрок-ентити, но у меня сомнения.
 
Сообщения
3,579
Реакции
1,569
Помог
137 раз(а)
попробуй представить себе реализацию API для такого более экономного управления фуллпаком. А ведь так нельзя: там каждый вызов информативен и нужен для полноты обработки. Фильтровать там просто нечего.
Вот так понятно, спасибо.
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Вот, а в случае с фуллпаком нельзя сэкономить на вызовах.
Так просили вроде не функцию фуллпака вывести в амхх, а изменить свойства без частого вызова.
Типо такого, где структура g_esVisibility меняется через нативы.

1584386657715.png
 
Сообщения
211
Реакции
335
Помог
3 раз(а)
fl0wer, ну а вот так вот можно. Если в g_esVisibility[][] хранятся указатели на pev структуры, то можно редактировать pev поля объекта по отношению к другому объекту и решение это неплохое
 
Последнее редактирование:
Сообщения
3,579
Реакции
1,569
Помог
137 раз(а)
fl0wer, Xelson, ну да, простым языком говоря, было бы неплохо сделать обработчик фуллпака отдельным модулем, в который нативом бы передавались аргументы (как для всех EntityState).
Например, SetEs_Solid(host, ent, SOLID_NOT) или SetEs(host, ent, solid, SOLID_NOT)
 
Сообщения
211
Реакции
335
Помог
3 раз(а)
Nordic Warrior, скорее так:
native set_pev_es(host, entity, pev_field, any:...)
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
На самом деле так и не все стейты нужны:
1584586715505.png
Не знаю, что у вас за желание менять энтвары, особенно в посте))
 
Сообщения
169
Реакции
462
Помог
2 раз(а)
Заглянул только в main.cpp, поржал, хватило, дальше не стал. Смело можно выкладывать на http://govnokod.ru что бы люди тоже поражали.
Keys.insert(Keys.end(),p);
Keys.insert + Keys.end() РОФЛ. push_back для чего придумали?

if (!g_pFunctionTable->pfnCmdStart)
Бесполезная проверка.

Keys.at(i)
У вектора есть оператор []

Keys.erase(Keys.begin()+i)
Если уж нужно удалять из вектора в цикле, используй begin\end:
C++:
    std::vector<int> vec;
    std::vector<int>::iterator it = vec.begin();
    std::vector<int>::iterator end = vec.end();

    while (it != end) {
        if (/*condition*/) {
            it = vec.erase(it);
            continue;
        }

        ++it;
    }
И даже Keys.size() дергать каждую итерацию не пришлось. Магия.

if (!Keys.size())
Метод empty()? Не, не слышал!

Можно продолжать. Хотя казалось бы, такой простой модуль, код всего в одном файле и столько рофла.
реализую, только напиши
Лучше нинада!
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
./del
 
Последнее редактирование:
Сообщения
169
Реакции
462
Помог
2 раз(а)
Ну вот опять рофл. На словах дофига специалист, а на деле говонокод пишешь и еще других критиковать пытаешься :haha:
Если бы умел читать код стл, ты бы знал, что insert работает медленнее push_back (ну, хотя бы знаешь слово стл, уже +, продолжай учится).
Вот тебе самый простой тест:
Код:
#include <chrono>
#include <iostream>
#include <vector>

#define INSERT

int main()
{
    std::vector<int> vec;
    const auto start = std::chrono::steady_clock::now();

#ifdef INSERT
    for (int i = 0; i < 100500; i++)
        vec.insert(vec.end(), i);
#else
    for (int i = 0; i < 100500; i++)
        vec.push_back(i);
#endif

    const auto finish = std::chrono::steady_clock::now();
    const auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(finish - start).count();

    std::cout << "Time: " << elapsed;
}
На моей машине, vec.insert в среднем занимает 200000000 наносекунд. vec.push_back 40000000 то есть в 5 раз быстрее.
мне нравится такой подход, он быстрее
:haha: пишиисчо
Хотя только молоть языком ты и умеешь...
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
./del
 
Последнее редактирование:
Сообщения
432
Реакции
410
Помог
14 раз(а)
Заканчивайте срач. Если есть что друг другу сказать - скажите это в личке, а здесь только по теме.
 

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

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