Stránka 1 z 1

Patchování souborů pomocí WeiDU

Napsal: 29.7.2006 14:04
od Razfallow
Zajímalo by mě, jak s pomocí WeiDU nastavit nebo vypnout u předmětu určitý flag (Unsellable, Two-handed, ...)?

Potřebuji u jednoho předmětu nastavit flag Magical a nechci ten předmět přepisovat.

Napsal: 29.7.2006 14:45
od drake127
COPY_EX...
READ_LONG 0x18 flags
WRITE_LONG 0x18 (flags | 0x00000040)

možná jsem to číslo nenapsal dobře, ale takhle se to dělá.

Edit: a vypnutí se dělá:
WRITE_LONG 0x18 (flags & ~0x00000040)

Napsal: 29.7.2006 14:52
od Razfallow
Já právě netuším, jak se spočítá to číslo (0x00000040). V NI jsou pouze celá čísla. Třeba zrovna flag magical má 6.

Napsal: 29.7.2006 14:59
od drake127
To je pořadí bitu. Pokud je to v NI značené správně a rozmezí je od 1 do 32, potom jsou to hodnoty:
0x00000001
0x00000002
0x00000004
0x00000008
0x00000010
0x00000020
...
0x80000000

Napsal: 5.8.2006 13:32
od Razfallow
Jak zapsat pomocí weidu na nějaký offset zápornou hodnotu?

Napsal: 5.8.2006 14:50
od Vlasák
Záleží, jak je tam nula. Osobně bych tipl, že přes dvojkový doplněk - tak se často zapisují záporná čísla, ale uvidíme. Máš např. -5. Decimálních 5 převedeš na binárních 5, tj. 101. Zneguješ (tj. dle "šířky" byte/word/dword to bude na začátku několik jedniček výsledkem nezapsaných znegovaných nul), pro byte: 11111010. A následně přičteš 1, takže 11111011. A to do hexadecimálního tvaru FB.

Ale weidu myslím podporuje i zápis decimálních a binárních hodnot, ne? To by se pak dalo zapsat rovnou...

Napsal: 5.8.2006 15:02
od Razfallow
Zkoušel jsem to s -50, ale háže to chybu.

Napsal: 5.8.2006 15:06
od Vlasák
Jak jsi tam zadal těch -50?

Napsal: 5.8.2006 15:08
od Razfallow
WRITE_BYTE 0x5a -50

Napsal: 5.8.2006 15:13
od Vlasák
aha, tak to asi bude třeba převést na hexa... mínus tam asi falíruje...

50 = 110010b
neg: 11001101b
+1: 11001110b = 0xCE

Napsal: 5.8.2006 15:18
od Razfallow
Díky moc ;-)

Napsal: 5.8.2006 15:21
od Vlasák
Ale pro jistotu si to v nějakém prohlížeči zkontroluj. Jde i o to, jak "široká" ta hodnota je, pokud word, tak tam musíš doplnit ještě dvě FF, atp.

Napsal: 5.8.2006 15:42
od Razfallow
Vlasák píše:Ale pro jistotu si to v nějakém prohlížeči zkontroluj. Jde i o to, jak "široká" ta hodnota je, pokud word, tak tam musíš doplnit ještě dvě FF, atp.
Jo, jde to. Na to převádění stačí windowská kalkulačka, lze převést záporné decimální číslo přímo na hexadecimální.

Napsal: 6.8.2006 1:42
od drake127
Ano, Windows kalkulačka to spočte dobře a ještě si můžeš vybrat velikost (qword, dword, word, byte).