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

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
d3m37r4, я немного офигел, когда я не могу сменить ник, а какой то игрок каждый 5 секунд его меняет в обход плагина или resrdetector'а
 
Последнее редактирование:
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
d3m37r4, я имел ввиду со стороны игрока, может ли игрок его миновать
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
Объясните пожалуйста разницу между set_localinfo и set_vaultdata где хранятся данные и теряются ли они при падении или выключения сервера?
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
На сколько вообще рентабельнее работать с битсуммами как замену работы с обычными булевыми например?
А то читаю, мнения у всех расходятся, кто-то говорит, что быстрее будет, кто-то говорит, что нет, мол операций будет больше.

Из рунета:
Вот небольшой кусок тестового плагина

Код:
new alive[ 33 ];
new bits_alive;
public alive ( id )
{
    alive[ id ] = true;   
    #emit break;   
    bits_alive |= 1 << ( id - 1 );
    #emit break
}
а вот его дизассемблированный код

Код:
PROC  alive
    zero.alt       
 
 ; 2
    load.s.pri   0xC ; 3
    bounds       0x20; 4
    idxaddr        &
amp;
nbsp; ; 2
    move.alt       
 
 ; 2
    const.pri   0x1  ; 2
    stor.i        &a
mp;n
bsp;  ; 10
             &n
bsp;       ; 25
 
    load.pri   0x84  ; 3
    push.pri       
 
 ; 3
    load.s.pri  0xC  ; 3
    add.c      -0x1 
;
;; 3
    const.alt   0x1  ; 2
    xchg        &
;nbs
p;    ; 3
    shl         
;     ; 6
    pop.alt        &
amp;
nbsp; ; 4
    or         
      ; 3
    stor.pri    0x84 ; 3
             &n
bsp;       ; 33
ENDP
как видно строка alive[ id ] = true выполняется в семь операций, а bits_alive |= 1 << ( id - 1 ) в 10 операций.
Цифры после ; это кол-во операций ассемблера (можно посмотреть в исходниках amxx файл amxexecn.asm), даже тут булевая операция выигрывает (25 против 33 комманд).
 
Сообщения
1,661
Реакции
1,486
Помог
24 раз(а)
даже тут булевая операция выигрывает (25 против 33 комманд).
что выигрывает?
6 Дек 2020
Очевидно, что битсуммы придумали не для "оптимизаций" в павне и точно не для извращений с проверкой живого игрока, а для цели хранить несколько значений в одной переменной, например: флаги игрока, стейты оружия (спорно).
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
fl0wer, мне кажется больше для сжатия их используют. На форумах по сампам треды про сжатие ASCII-строк попадались.
Javekson, тут дело в удобстве скорее, а не в рентабельности. Реальный прирост в производительности это не даст. расход пасяти в 4 раза сократит, но это практически незаметно. (Вообще есть олимпиадные задачи где ими можно нехило память сохранить, но в коес их не решают)
Я использую потому, что мне удобно.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
Появилась необходимость хранить различное время игры игроков, например время игры будучи только живым, вопрос по большей части риторический, нужно ли в этой схемы убрать хук смены команды? При каких обстоятельствах или в каких-то модах может случится так, что игрок перейдя в спектры не умрет?

P.s: схемы рисовать не умею
diagram.png
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
Javekson, спектатора воскресить можно. У меня в моде мёртвые игроки и наблюдатели могут в режим призрака переходить и при этом являться "живыми".
 

d3m37r4

111111
Сообщения
1,420
Реакции
1,162
Помог
10 раз(а)
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fl0wer, я не говорил, что оно плохое
11 Дек 2020
d3m37r4, это понятно, просто хотел узнать встречается ли такое на практике переход в спектры без убийства игрока
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
7 разных режимов накидал, но учитывая нюансы модов, не уверен, что будет работать как задумано
 

Download all Attachments

Сообщения
1,661
Реакции
1,486
Помог
24 раз(а)
А мог бы просто в лоб сделать, избавившись от лишнего кода и большой логики.
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fl0wer, вместо синка таском можно пробегать по игрокам и проверять их состояние, погрешность небольшая будет
 
Сообщения
1,012
Реакции
814
Помог
10 раз(а)
fl0wer, будет если желание, загляни в код, подскажи, что можно придумать с логикой начиная с 73 строки, это подсчет игрового времени.
Логику подсчета отдельно по каждой команде вроде сделал, но получилось так, что сейчас две разные логики с повторными условиями, можно ли как-то эти две логики объединить в одну, красиво и грамотно, так сказать?
 

Ayk

Сообщения
763
Реакции
476
Помог
19 раз(а)
Javekson, комбинация TeamInfo + get_user_time() или get_systime() + метки (моменты смены команды). Видел такую реализацию. Не подходит?
 
Статус
В этой теме нельзя размещать новые ответы.

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

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