Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Użycie ScreenFade


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 csMaster

    Wszechwiedzący

  • Power User

Reputacja: 14
Początkujący

  • Postów:542
  • Lokalizacja:localhost
Offline

Napisano 21.05.2018 16:33

W jaki sposób jest liczona 1 sekunda z (1<<12) w wiadomości ScreenFade ?

Skoro (1<<12) to 1 sekunda to w jaki sposób zapisać w postaci (1<<X) np. 0.5s lub 0.25s ?


  • +
  • -
  • 0

#2 Toldi

    Czempion

  • Power User

Reputacja: 259
Wszechwidzący

  • Postów:841
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 21.05.2018 17:50

W jaki sposób jest liczona 1 sekunda z (1<<12) w wiadomości ScreenFade ?

Skoro (1<<12) to 1 sekunda to w jaki sposób zapisać w postaci (1<<X) np. 0.5s lub 0.25s ?

W sumie to i ja bardzo nie wiem :D Ale idąc logicznym tokiem myślenia to skoro 1<12 to 1s, 1<6 0.5s a 1<3 to 0.25s, ale tak jak mówię nie jestem pewien czy dobrze to rozszyfrowałem. Możliwe że palnąłem tu niesamowitego byka :D


  • +
  • -
  • 0

#3 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 21.05.2018 21:32

@UP
Owszem, dość okazały byk :D 1<<x oznacza przesunięcie bitowe '1' o x miejsc w lewo. Rozchodzi się oczywiście o operacje na bitach:

0000 = 0*23 + 0*22 + 0*21 + 0*20 = 0+0+0+0 = 0
0001 = 0*23 + 0*22 + 0*21 + 1*20 = 0+0+0+1 = 1
0010 = 0*23 + 0*22 + 1*21 + 0*20 = 0+0+2+0 = 2
0011 = 0*23 + 0*22 + 1*21 + 1*20 = 0+0+2+1 = 3
...
1000 = 1*23 + 0*22 + 0*21 + 0*20 = 8+0+0+0 = 8
[...]

1<<0 jest równoznaczne zapisowi: 0001 = 1
1<<1: 0010 = 2
1<<2: 0100 = 4
1<<3: 1000 = 8
 
Sprawdźmy 1<<6, w tym celu należy ową '1' przesunąć o 6 miejsc w lewo.
Sytuacja początkowa: 0000 0001
Po przesunięciu: 0100 0000 = 26 = 64
 
Następnie sprawdzamy 1<<12:
Sytuacja początkowa: 0000 0000 0000 0001
Po przesunięciu: 0001 0000 0000 0000 = 212 = 4096
 
Skoro 1s = 1<<12 = 4096, to 0.5s = 4096/2, czyli 2048 - inaczej 1<<11, a nie 1<<6 :D

Istnieją poradniki przybliżające pojęcie systemów liczbowych (i wszelkich cudów z nimi powiązanych), dlatego nie będę się rozwodził na ten temat.
 
Wracając do tematu - można w łatwy sposób przypisać makro obliczające czas dla 'ludzkich' danych wejściowych:

#define bitfloatvalue(%1) floatround((%1)*(1<<12))

Użycie:

bitfloatvalue(1.0) // 1 sekunda
bitfloatvalue(0.5) // pół sekundy

Źródło: https://amxx.pl/topi...ia/#entry546427


Użytkownik _McHappy edytował ten post 21.05.2018 21:39

  • +
  • -
  • 1




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych