Du bist nicht eingeloggt.

B2B-Realm Status

Social Networks

B2B auf Twitter
B2B auf Facebook

Bugtracker

Cato

Ehemaliges Teammitglied

  • »Cato« ist der Autor dieses Themas

Beiträge: 997

Registrierungsdatum: 31.01.2012

Wohnort: Österreich

  • Private Nachricht

1

Freitag, 30. August 2013, 10:22

IsFitToFamilyMask

Hey!
Auf die Gefahr hin, mich zu blamieren: ich raffe das mit dem call IsFitToFamilyMask nicht, und nachdem ich total antiqualifiziert bin und meine technische und mathematische Ausbildung alles dafür getan hat, dass ich solche Sachen nicht verstehe, bitte ich um Hilfe und Verständnis, weil es euch wahrscheinlich ziemlich banal vorkommt.
Sagen wir, ich will Frostbolt und Fireball abfagen. Die beiden haben die folgenden SpellFamilyFlags:
0x0000000040180020
0x0000000040000001
Wie genau läuft das dann? Addiere ich die beiden Werte einfach, sodass das dann so aussieht:

Quellcode

1
if (spellInfo->IsFitToFamilyMask(UI64LIT(0x0000000080180021) 

Und was hat es mit dem UI64LIT auf sich?
Ceterum censeo.... ach, was soll's.

itslovelol

Meister

Beiträge: 376

Registrierungsdatum: 18.11.2012

  • Private Nachricht

2

Freitag, 30. August 2013, 11:01

Hey!
Auf die Gefahr hin, mich zu blamieren: ich raffe das mit dem call IsFitToFamilyMask nicht, und nachdem ich total antiqualifiziert bin und meine technische und mathematische Ausbildung alles dafür getan hat, dass ich solche Sachen nicht verstehe, bitte ich um Hilfe und Verständnis, weil es euch wahrscheinlich ziemlich banal vorkommt.
Sagen wir, ich will Frostbolt und Fireball abfagen. Die beiden haben die folgenden SpellFamilyFlags:
0x0000000040180020
0x0000000040000001
Wie genau läuft das dann? Addiere ich die beiden Werte einfach, sodass das dann so aussieht:

Quellcode

1
if (spellInfo->IsFitToFamilyMask(UI64LIT(0x0000000080180021) 

Und was hat es mit dem UI64LIT auf sich?


Zitat

mysql cmd -> select 0x040180020 | 0x040000001;

Dürfte aber schon so richtig sein wie du es gerechnet hast.

UI64LIT ist einfach nur eine größe, in dem Fall uint64.

antifreak

Drachentöter

Beiträge: 1 366

Registrierungsdatum: 01.09.2010

Gilde: Innocence of Cræck

  • Private Nachricht

3

Freitag, 30. August 2013, 11:04

Es ist keine Größe, es ist ein Datentyp. In diesen castest du im C Style (Mangos nutzt so ekelhafte Dinge).


Betagan

Wandelnde Legende

Beiträge: 1 698

Registrierungsdatum: 22.08.2010

Wohnort: Kiel

Hauptcharakter: Betagan

Gilde: Bloodline

  • Private Nachricht

4

Freitag, 30. August 2013, 13:48

ja ne also deine beiden masks da
0x0000000040180020
0x0000000040000001
ergibt 0x40180021

weil du nicht addierst sondern bitweises OR machst. Anschaulich schreibst du die Zahlen in binaerschreibweise (10110111 etc) untereinander und im ergebnis ist ueberall eine 1 wo in einer der beiden zahlen eine 1 war, und nur dort eine 0 wo beide eine 0 hatten.

wie lovexd schon schrieb kannst du das einfach selbst rechnen wenn du als einen mysql query einfach "select 0x40180020 | 0x40000001;" eingibst. das ergebnis ist dann dezimal (base10), aber kannste ja einfach nach Hex (base16) umrechnen (lassen) dann.

MySQL-Abfrage(n)

1
2
3
4
5
6
7
mysql> select 0x40180020 | 0x40000001;
+-------------------------+
| 0x40180020 | 0x40000001 |
+-------------------------+
|              1075314721 |
+-------------------------+
1 row in set (0.00 sec)


Auf diese Weise kannst du dann masks erstellen, die beliebige spells erlauben, indem du die jeweiligen masks mit dem OR operator | kombinierst.

UI64LIT ist ein Datentyp (Unsigned integer 64bit) und wird hier explizit angegeben, damit der angelegte speicher gross genug ist fuer die masks, die groesser werden koennen als normale integers. Das "aendert" aber am Wert nichts, kannst du einfach als gegeben hinnehmen und ignorieren.



5

Freitag, 30. August 2013, 14:02

http://jumk.de/bit/index.shtml
http://de.selfhtml.org/helferlein/dezhex.htm
vllt 2 ganz hilfreiche seiten wenn man es nicht selber rechnen will
1.Server: Mangos: s1514 SD2: s2438
2.Server: CMangos: 1982

Cato

Ehemaliges Teammitglied

  • »Cato« ist der Autor dieses Themas

Beiträge: 997

Registrierungsdatum: 31.01.2012

Wohnort: Österreich

  • Private Nachricht

6

Freitag, 30. August 2013, 14:18

Vielen Dank für die Erklärungen, das leuchtet jetzt sogar mir völlig ein ^-^
Ceterum censeo.... ach, was soll's.

Lyrakes

Fachmann

Beiträge: 266

Registrierungsdatum: 02.12.2012

Hauptcharakter: Lyrakes

  • Private Nachricht

7

Montag, 9. September 2013, 10:26

Danke an rowman ! :D Ich finde deine seiten echt Hilfreich
Pulvis et umbra sumus.

“How can I be substantial if I do not cast a shadow? I must have a dark side also If I am to be whole”