[Pawn] Вопросы от Javekson

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
1,016
Реакции
818
Помог
10 раз(а)
Ayk, чуть выше обсуждали же, скрины схем приложил
 

Ayk

Сообщения
763
Реакции
476
Помог
19 раз(а)
Javekson, не смотрел.
Я подсказал реализацию на хуках вместо таймера.

Вот ещё (тут сурсмод, но не суть), на таймере, если прибавлять секунду для текущей команды, то не нужно будет кэширование и сравнение старой с новой командой
Код:
public Action PlayTimeTimer(Handle timer)
{
    for(int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i))
        {
            int team = GetClientTeam(i);
            
            if(team == 2)
            {
                ++g_iPlayTimeT[i];
            }
            else if(team == 3)
            {
                ++g_iPlayTimeCT[i];
            }
            else
            {
                ++g_iPlayTimeSpec[i];
            }
        }
    }
}
От коннекта до дисконнекта 4 переменные собирают секунды для 4-х команд.
Сюда же легко встанет подсчет секунд жив/мертв.
Как по мне, задачу свою выполняет.
 
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)
у тя таск не точный
 
Сообщения
1,016
Реакции
818
Помог
10 раз(а)
Я подсказал реализацию на хуках вместо таймера.
Изначально так и было, итого 8 режимов в одном плагине, но это дает нам больше кода, больше логики и потенциальные баги при различных модах, в которых я не шарю, поэтому fl0wer правильно подсказал, лучше в лоб, только вместо синка выбрал таймер.

Вот ещё (тут сурсмод, но не суть), на таймере, если прибавлять секунду для текущей команды, то не нужно будет кэширование и сравнение старой с новой командой
спасибо, это будет куда правильней думаю.

у тя таск не точный
В смысле? Ты про погрешность до 1 секунды?
 
Сообщения
1,016
Реакции
818
Помог
10 раз(а)
Где то слышал, что switch при декомпиляции плагина выражается как простой if else, это верное утверждение?
И второй вопрос, я же правильно понимаю, что если в switch сработает условие на команду TEAM_CT, то далее проверять на другие команды оно не будет в памяти?

Код:
switch( iTeam )
{
    case TEAM_CT: { код }
    case TEAM_TERRORIST: { код }
    case TEAM_SPECTATOR: { код }
    case TEAM_UNASSIGNED: { код }
}
Как понимаю эквивалентно этому
Код:
if( iTeam == TEAM_CT ) { }
else if ( iTeam == TEAM_TERRORIST ) { }
else if ( iTeam == TEAM_SPECTATOR ) { }
else ( iTeam == TEAM_UNASSIGNED ) { }
 
Последнее редактирование:
Сообщения
225
Реакции
90
Помог
1 раз(а)
Javekson, In pawn, switch is a structured “if”.
Не будет. Про это тоже в документации было, но лень искать. В павне не требуется break в switch ставить.
Не совсем эквивалкнтно else <=> default
Упыдэ правка: if забыли один
И ещё элементы в порядке возрастания должны быть (мб ошибаюсь) и дефолт последним идти должен.
 
Сообщения
327
Реакции
289
Помог
9 раз(а)
Сообщения
1,016
Реакции
818
Помог
10 раз(а)
Очень интересное поведение, как такое может быть что время выполнение запроса отрицательное...
2020-12-29_155749.jpg
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
Javekson, просто данные через искажение пространства идут или со скоростью превышающей скорость света.
А так скорее всего из-за рассинхрона по времени.
 
Сообщения
1,016
Реакции
818
Помог
10 раз(а)
Необходимо преобразовать массив(trie) в json формат, смотрел json.ink, но на глаза не попалось, либо слепой, либо такого нету?
 
Сообщения
1,016
Реакции
818
Помог
10 раз(а)
Приветствую, рассуждаю вслух, необходимо услышать ваши советы.

На текущий момент хочу перевести абсолютно все на работу с базой данных, банлист, мутлист, холостые, для будущей истории хранить статистику kick, slay, slap, warn и т.д., иначе говоря хранить всю активность админов и все наказание игроков.

Делать для каждого плагина свою базу данных считаю не целесообразным по несколько причинам
  • Придется каждый коннект обращаться к разным базам данным для получение бана, мута и так далее, что в конечном итоге забьет нам лимит подключений, конечно можно закостылисть, но такое себе...
  • Конечно при загрузке плагина инфу можно загружать в дин.массивы, но спустя время они разрастутся, будут иметь тысячу данных, что тоже не очень хорошо
Итого делаю для себя вывод, что надо придумать единую структуру для работы с игроками и админами, но работать с mysql внутри amxx не горю желанием, думаю для этой задачи идеально подойдет gRip

Вопрос в следующем, правильно ли я рассуждаю в целом?
 
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)
А какая разница мускул или грип, одинаковые операции по сути. Какую-то инфу все равно придется кэшить в плагине.
 
Сообщения
2,288
Реакции
1,738
Помог
31 раз(а)
На текущий момент хочу перевести абсолютно все на работу с базой данных, банлист, мутлист, холостые, для будущей истории хранить статистику kick, slay, slap, warn и т.д., иначе говоря хранить всю активность админов и все наказание игроков.
в чем смысл хранить ненужную инфу?
 
Сообщения
1,016
Реакции
818
Помог
10 раз(а)
fl0wer, скриптом проще выстроить логику обработки очередей запросов, не нужно открывать кучу коннектов, избавимся от проблем зависания сервера при смене карты(редко, но бывает когда ответы долго приходят), мне кажется это выгоднее будет с грипом работать и скриптом обработки запросов.

в чем смысл хранить ненужную инфу?
что бы было
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
Делать для каждого плагина свою базу данных
А если работать с одной базой в разных плагинах? (личного опыта с бд для этих коесов ваших нет)
Тип одну базу нормальзовать и обращаться к разным таблицам в разных плагинах.
Упыдэ. Хотя я бы лучше в один плугикс собрал, чтобы разом всю инфу выгрузить. Всё равно если всё в одной бд хранить меньше данных грузить надо.
 
Последнее редактирование:
Сообщения
285
Реакции
251
Помог
7 раз(а)
Сделай единый плагин работы с базой и прокинь апи, для форса данными в других плагинах, set/get
 

d3m37r4

111111
Сообщения
1,428
Реакции
1,169
Помог
10 раз(а)
Сделай единый плагин работы с базой и прокинь апи, для форса данными в других плагинах, set/get
Достаточно просто указатель развернутого соединения в другие плагины передавать. Пример: fb+aes.
 

d3m37r4

111111
Сообщения
1,428
Реакции
1,169
Помог
10 раз(а)
Статус
В этой теме нельзя размещать новые ответы.

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

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